继承
这是《Java8编程参考官方教程》第8章的笔记。
基础知识:
- 尽管子类包含超类的所有成员,但是子类不能访问超类中被声明为私有的那些成员。
- 超类变量可以引用子类变量,如parentClass = childClass;但是parentClass只能访问childClass的那些在超类中定义的部分。
super的两种用法:
- 调用超类的构造函数
- 用于访问超类中被子类的某个成员/方法隐藏的成员/方法。这句是指子类中有与超类同名的成员/方法。
super总是引用最近超类的构造函数。
构造函数的调用次序:从最超的类开始。
子类的重写方法会使超类的被覆盖,如果希望访问超类中被重写的方法,可以使用super。
抽象类:abstract
不能使用new运算符直接实例化抽象类,不能声明抽象的构造函数,也不能声明抽象的静态方法。抽象类的子类要么实现超类中的所有抽象方法,要么自己也声明为抽象的。
尽管不能用于实例化对象,但是可以使用它们创建对象引用。e.g. parentClass p = new childClass();是错误的。但是childClass c = new childClass(); parentClass p = c;是可以的。
final的用法:
- 创建常量
- 阻止重写
- 阻止继承
将类声明为final,就隐式地将所有方法也声明为final。
将类同时声明为final何abstract是非法的,因为抽象类本身是不完整的,它依赖子类来提供完整的实现。
Object类是所有其他类的超类。