TIJ-4Edition-复用类
作者:互联网
1、组合和继承
A is-a B:A、B本质上是一个东西。——继承
A has-a B: B是A的一部分,但它们不是一回事。——组合
组合复用了功能,而非形式。
继承不只是复制基类的接口和字段,当创建一个导出类对象时,该对象中包含了一个基类的子对象。
所以,要对基类子对象进行初始化,在导出类构造器中调用基类的构造器。
编译器会在导出类构造器中插入对基类默认构造器的调用。
构造过程是从基类开始的往下扩散的。
父类没有默认构造器时,就要显式地用super关键字调用带参构造器。
2、代理
代理像是继承和组合的这种,更偏向于组合一点。
我们可以用一个代理对象封装目标对象的功能,可以使功能更加的纯粹(只暴露出我们想要的)。
3、结合使用继承和组合
1、名称屏蔽
子类重载父类方法时,不会屏蔽父类的方法。它们会同时存在。
2、protected关键字
protected关键字修饰的域只有在导出类或同包的类中才能访问。
3、向上转型
沿接口树向上转或沿继承链向上转。
4、final关键字
1、永不改变的编译时常量。
2、运行时被初始化的值,但是希望它初始化就不改变。
static final修饰的域只能占据一段不能改变的存储空间。这时它就是一个编译时常量,必须在定义时赋值。
编译时常量的初始值会被保存在Class文件的ConstantValue属性中。因此能在类加载时进行初始化。
final修饰的引用不能被修改,但是引用指向的对象是可以修改的。
final修饰的在继承中方法不能被重写。
private方法都是默认为final的,因此也无法被重写。(都不能访问,怎么能允许重写)
final修饰的类不能被继承。
4、继承中的初始化顺序
父类静态代码块 > 子类静态代码块 > 父类代码块 > 父类代码块 > 父类构造器 > 子类代码块 > 子类构造器。
标签:4Edition,继承,子类,复用,构造,TIJ,基类,父类,final 来源: https://www.cnblogs.com/lqblala/p/15150525.html