20190818 On Java8 第八章 复用
第八章 复用 组合语法 初始化引用有四种方法: 当对象被定义时。这意味着它们总是在调用构造函数之前初始化。 在该类的构造函数中。 在实际使用对象之前。这通常称为延迟初始化。在对象创建开销大且不需要每次都创建对象的情况下,它可以减少开销。 使用实例初始化。 继承语法 初始化基类 Java 自动在派生类构造函数中插入对基类构造函数的调用。 构造从基类“向外”进行,因此基类在派生类构造函数能够访问它之前进行初始化。即使不为 Cartoon 创建构造函数,编译器也会为你合成一个无参数构造函数,调用基类构造函数。 先调用基类构造器,从最基类向外层层调用。 带参数的构造函数 对基类构造函数的调用必须是派生类构造函数中的第一个操作。 委托 Java不直接支持的第三种重用关系称为委托。这介于继承和组合之间,因为你将一个成员对象放在正在构建的类中(比如组合),但同时又在新类中公开来自成员对象的所有方法(比如继承)。 结合组合与继承 保证适当的清理 在清理方法 中,还必须注意基类和成员对象清理方法的调用顺序,以防一个子对象依赖于另一个子对象。首先, 按与创建的相反顺序执行特定于类的所有清理工作 。(一般来说,这要求基类元素仍然是可访问的。) 然后调用基类清理方法。 组合与继承的选择 当你想在新类中包含一个已有类的功能时,使用组合,而非继承。 当使用继承时,使用一个现有类并开发出它的新版本