一、面向对象学习的三条主线
1.Java类及类的成员:属性、方法、构造器、代码块、内部类;
2.面向对象的三大特性:封装、继承、多态;
3.其它关键字:this、super、static、final、abstract、interface、package、import等。
二、面向过程和面向对象
举例:人把大象装进冰箱
面向过程:
理解:强调的是功能行为,以函数为最小单位,考虑怎么做。
具体实现:
①把冰箱门打开;
②抬起大象,塞进冰箱;
③把冰箱门关闭。
面向对象:
理解:强调具备了功能的对象,以类/对象为最小单位,考虑谁来做。
具体实现:
人{
打开(冰箱){
冰箱.开开();
}
抬起(大象){
大象.进入(冰箱);
}
关闭(冰箱){
冰箱.闭合();
}
}
冰箱{
开开(){}
闭合(){}
}
大象{
进入(冰箱){}
}
注:以上皆为伪代码。
三、面向对象的两个要素
类:对一类事物的描述,是抽象的、概念上的定义。
对象:是实际存在的该类事物的每个个体,因而也称为实例(instance)
四、总结
1.面向对象程序设计的重点是类的设计;
2.设计类,就是设计类的成员。
①属性 = 成员变量 = field = 域、字段
②方法 = 成员方法 = 函数 = method
③创建类的对象 = 类的实例化 = 实例化类
五、面向对象思想落地的实现
1.创建类,设计类的成员;
2.创建类的对象;
3.通过“对象.属性”或“对象.方法”调用对象的结构
注:如果创建了一个类的多个对象,则每一个对象都独立的拥有一套类的属性(非static的)。意味着,如果我们修改一个对象的属性a,则不影响另一个对象的属性a的值。
代码:
public class PersonTest { public static void main(String[] args) { //2.创建Person类的对象 Person p1 = new Person(); //3.调用对象的结构:属性、方法 //3.1调用属性:“对象.属性” p1.name = "Tom"; p1.isMale = true; System.out.println(p1.name); //3.2调用方法:“对象.方法” p1.eat(); p1.sleep(); p1.talk("Chinese"); //再创建一个对象 Person p2 = new Person(); System.out.println(p2.name);//null System.out.println(p2.isMale); //将p1变量保存的对象地址值赋给p3,导致p1和p3指向了堆空间中的同一个对象实体 Person p3 = p1; System.out.println(p3.name);//Tom p3.age = 18; System.out.println(p1.age);//18 } } //1.创建类,设计类的成员 class Person{ //属性 String name; int age = 1; boolean isMale; //方法 public void eat(){ System.out.println("人可以吃饭"); } public void sleep(){ System.out.println("人可以睡觉"); } public void talk(String language){ System.out.println("人可以说话,使用的是:" + language); } }
六、对象的内存解析
