1. 面向对象
对象的概念:
对象(object)代表现实世界中可以明确标识的一个实体。
例如:一个学生、一张桌子、一间教室,一台电脑都可以看做是一个对象。
每个对象都有自己独特的状态标识和行为对象的属性(attribute),或者状态(state)。
学生有姓名和学号,该学生特有的姓名和学号就是该学生(对象)的属性。
对象的行为(behavior),是由方法定义,调用对象的一个方法,其实就是给对象发消息,要求对象完成一个动作。
可以定义学生对象具备学习的行为。学生对象可以调用学习的方法,执行学习的动作。
举个栗子:定义一个汽车类,并生产出汽车,有颜色,轮胎(tyre)个数,有运行(run)的功能。
对象 = 属性 + 行为
public class Car {
String color;
int tyre;
void run() {
if (tyre < 4) {
System.out.println("汽车少了轱辘,跑不了。。。");
}else {
System.out.println("汽车跑了。。。");
}
}
public static void main(String[] args) {
Car car = new Car();
car.color = "red";
car.tyre = 3;
car.run();
car.tyre = 4;
car.run();
}
}
运行结果:
汽车少了轱辘,跑不了。。。
汽车跑了。。。
创建对象
1. 使用new关键词,就像new数组一样
2. 需要给汽车起一个名字,也就是变量名:car
3. 变量都是有类型的,car属于什么类型,属于Car类型,叫做类类型
调用对象的属性/方法
直接 对象.*** 就可以调用对应的成员变量/成员方法
如上面的car.run();
成员变量与局部变量,解析变量作用域
1. 成员变量:在整个类内都有效
2. 局部变量:只在其声明的方法内有效
3. 成员变量:它属于对象的属性,它随着对象的创建而创建,随着对象的消失而消失
4. 局部变量:使用完马上释放空间
5. 成员变量属于对象,它存储在堆内存内,堆内的实体,当没有引用指向其时,才垃圾回收清理
6. 局部变量存在栈内存中,当不在使用时,马上就会被释放
7. 成员变量:存储在堆中,如果没有赋初值,它有默认值
8. 局部变量:如果要想使用必须手动初始化
画个图吧 ̄へ ̄ 解释下成员变量与局部变量的生命周期:
匿名对象
没有名字的实体,也就是该实体没有对应的变量名引用
1. 当对象对方法进行一次调用的时候,可以使用匿名对象对代码进行简化。
2. 为什么只对方法,而不调用属性呢?因为匿名对象调用属性没意义。
3. 如果对象要多成员进行多次调用,必须给对象起个名字。不能再使用匿名对象。
4. 匿名对象可以当做实际参数进行传递。
5. 执行完毕后该对象立刻变成垃圾。