------Java培训、Android培训、iOS培训、.Net培训、期待与您交流------
面向对象思想
面向过程:关注的是步骤和过程
面向对象:关注的是对象
面向对象是基于面向过程的
面向对象的特点:
a: 是一种更符合人们思考习惯的思想
b: 把复杂的事情简单化了
c: 从执行者变成指挥者
类与对象以及引用
事物 类
属性 成员变量
行为 成员方法
属性: 就是事物的描述信息
行为: 就是该事物可以做到事情
成员变量: 和之前定义变量一样,只不过位置不同. 在类中方法外
成员方法: 和之前定义方法一样,只不过去掉static
类: 就是一组相关属性和行为的集合,是一个抽象的东西
对象: 就是该类的一个具体体现
使用类:
创建对象: 格式:
类名 对象名 = new 类名();
访问成员变量的格式:
对象名.变量名 ;
访问成员方法的格式:
对象名.方法名(...)
局部变量和成员变量的区别
a: 在类中的位置不同
局部变量: 方法定义中或者方法声明上的变量
成员变量: 在类中方法外
b: 在内存中的位置不同
局部变量: 在栈内存
成员变量: 在堆内存
c: 生命周期不同:
局部变量: 随着方法的调用而产生,随着方法的消失而消失
成员变量: 随着对象的创建而产生,随着对象的消失而消失
d: 默认值的问题:
成员变量: 有默认值(系统给定)
局部变量: 没有默认值,必须先赋值,然后在使用
变量的访问注意事项:
a: 局部变量可以和成员变量的名称一致
b: 变量在访问的时候遵循"就近原则"
java语言的参数传递问题
基本数据类型参数传递,形式参数的改变对实际参数没有影响
引用数据类型的参数传递,形式参数的改变对实际参数是有直接影响的
java语言中只有值传递 ,没有址传递.
一个方法上如果形式参数是类类型的变量,我们如何调用?
如果以后看到某一个方法上的形式参数是一个类类型的变量,那么在调用的时候需要传递一个该类的对象
匿名对象
匿名对象: 没有名字的对象
Student s = new Student();
// 匿名对象
new Student();
作用:
a: 调用方法,仅仅调用一次
b: 作为参数传递
class Student {
public void show(){
System.out.println("student的show方法被调用了");
}
}
class StudentDemo {
public void method(Student s){
s.show();
}
}
// 测试类
class NoNameTest {
public static void main(String[] args){
// 创建Student对象
Student s = new Student();
// 调用show方法
s.show();
// s.show();
System.out.println("---------------------------");
// 匿名对象
// new Student();
new Student().show();
// new Student().show(); 重新创建了一个对象和之前不一样
System.out.println("---------------------------");
// 创建StudentDemo对象
// StudentDemo sd = new StudentDemo();
// 调用method方法
// sd.method(s);
// 把匿名对象作为参数传递
// sd.method(new Student());
new StudentDemo().method(new Student());
}
}
封装(private)
封装的思想:
是指隐藏对象的属性和实现细节,仅对外提供公共访问方式。
封装好处
隐藏实现细节,提供公共的访问方式
提高了代码的复用性
提高安全性。
封装原则
将不需要对外提供的内容都隐藏起来。
把属性隐藏,提供公共方法对其访问。
private特点:
a: private是一个修饰符
b: private可以修饰成员变量也可以修饰成员方法
c: 被private修饰的成员只能在本类中使用
运用private练习:
// 学生类
class Student {
// 成员变量
private String name ; // 姓名
private int age ; // 年龄
private String sex ; // 性别
// 成员方法getXxx和setXxx方法
public void setName(String n){
name = n ;
}
public String getName(){
return name ;
}
public void setAge(int a){
age = a ;
}
public int getAge(){
return age ;
}
public void setSex(String s){
sex = s ;
}
public String getSex(){
return sex ;
}
// 成员方法
public void show(){
System.out.println(name + "----" + age + "----" + sex);
}
}
// 测试
class StudentTest {
public static void main(String[] agrs){
// 创建学生对象
Student s = new Student();
// 给成员变量赋值
s.setName("小强");
s.setAge(24);
s.setSex("男");
// 输出成员变量的值
// 调用show方法
s.show();
// 通过get方法获取
System.out.println(s.getName() + "----" + s.getAge() + "---" + s.getSex());
}
}
***********重点掌握**************
this关键字
this关键字: 代表的是本类对象的一个引用,谁调用我方法中的this就代表谁.
this存在的解决的问题:
就是局部变量隐藏了成员变量的时候,我们可以通过this来明确访问的是成员变量