一.java面向对象的三条主线
1.java类以及类的成员:属性,方法,构造器,代码块,内部类
2.面向对象的三大特征:封装,继承,多态
3.其他关键字:this super,static,final,interface,abstract,package,import等
二.人把大象装进冰箱
1.面向过程,强调的是功能行为,以函数为最小单位,考虑怎么做
把冰箱门打开
把大象抬起,装进去
把冰箱门关闭
2.面向对象,强调的是具备了功能的对象,以类/对象为最小单位,考虑谁来做
人{
打开(冰箱){
冰箱.打开();
}
抬起(大象){
大象.进入(冰箱);
}
关闭(冰箱){
冰箱.闭合();
}
}
冰箱{
打开(){};
闭合(){};
}
大象{
进入(冰箱){
}
}
三.面向对象的2个要素
类Class和对象Object是面向对象的核心概念
类: 是一类事物的描述,是抽象的,概念上的定义
对象: 是实际存在的该类事物的每个个体,因而也称为实例instance
常见的类成员有,
属性:对应类中的成员变量 属性=成员变量=域,字段=field
行为:对应类中的成员方法 方法=行为=成员变量=函数=method
创建类的对象=类的实例化=实例化类
四.类和对象的使用(面向对象思想的实现)
1.创建类,设计类的成员
2.创建类的对象
3.通过"对象.属性"或"对象.方法"调用对象的结构
五.如果创建了一个类的多个对象,则每个对象都独立的拥有一套类的属性,(非static)
如果我们修改一个对象的属性,则不影响另一个对象的属性
六.对象的内存解析
堆heap:所有的对象实例以及数组都在在堆上进行分配
栈stack:存储局部变量(方法中的变量都是局部变量,如)
方法区method area:用于存储已被虚拟机加载的类信息,常量,静态变量,静态域,即时编译器编译后的代码等.
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);
}
}
2..创建类的对象
public class OOPTest {
public static void main(String[] args) {
//创建person类的对象
Person p1 = new Person();
//调用对象的结构:属性,方法
//调用属性:"对象.方法"
p1.name = "Tom";
p1.isMale = true;
System.out.println(p1.name);
//调用方法:"对象.方法"
p1.eat();
p1.sleep();
p1.talk("Chinese");
Person p2 = new Person();
System.out.println(p2.name);//null ? TOm? 报错? null
//将p1变量保存的对象地址值赋给了p3,导致p1和p3指向了堆空间的同一个对象实体
Person p3 = p1;
System.out.println(p3.name);//TOM
p3.age=10;
System.out.println(p1.age);//也是10
}
}