面向对象三大特征:继承(extends)、封装(encapsulation)、多态(ploymorphism)
1.继承(extends)
<1.>作用
Ⅰ.代码复用,更加容易实现类的扩展;
Ⅱ.方便建模;
<2.>判断方法
instanceof(左边是对象,右边是类):用来判断该对象是不是类或者子类所创建的;
<3.>要点
子类继承父类,可以得到父类全部属性和方法(除了父类的构造方法),但不见得可以 直接访问(父类私有属性和方法);
<4.>方法的重写(override)
重写针对的是语句块,重载针对的是“语句头”。(个人理解)
<5.>final关键字
修饰变量:常量
修饰方法:不可被子类重写,但是可以被重载
修饰类:不能被继承
<6.>继承和组合
组合:将父类对象作为子类的属性(实例化),子类通过调用这个属性来获得父类的属 性和方法;
继承(is-a)
组合(has-a)
2.封装(encapsulation)
<1.>作用
Ⅰ.提高代码的安全性和复用性;
Ⅱ.“高内聚”、“低耦合”;
修饰类 | 同一类 | 同一包 | 子类 | 所有类 |
private | * | |||
default | * | * | ||
protected | * | * | * | |
public | * | * | * | * |
<2.>开发
属性使用private,需要被其他类调用的方法使用public;
3.多态(ploymorphism)
<1.>作用
Ⅰ.不必编写每一子类的功能调用,可以直接把不同子类当父类看,屏蔽子类间的差异, 提高代码的通用率/复用率 ;
Ⅱ.父类引用可以调用不同子类的功能,提高了代码的扩充性和可维护性;
<2.>要点
Ⅰ.多态是方法的多态,与属性无关;
Ⅱ.多态存在的必要条件:继承,子类方法重写,父类引用指向子类对象;
Ⅲ.父类引用指向子类对象后,父类引用调用子类重写的方法,多态产生;
Animal a = new Dog();
a.animalCry();
<3.>对象转型
自动类型转换(向上转型):父类引用指向子类对象;
强制类型转换(向下转型)
4.Object类
<1.>toString()→hashcode
<2.>equals()
equals()比较的是hashcode;“==”比较的是对象
<3.>super关键字:访问父类被子类覆盖的方法和属性;
Ⅰ.super.f()→调用父类普通方法;
Ⅱ.super.value→调用父类成员变量;