【Java】第7章 复用类
1.初始化引用,可以在代码中的下列位置进行:
- 在定义对象的地方,这意味着它们总是能够在构造器被调用之前被初始化。
- 在类的构造器中。
- 就在正要使用这些对象之前,这种方式被称为惰性初始化,在生成对象不值得及不必每次都生成对象的情况下,这种方式可以减少格外的负担。
- 使用实例初始化。
2.为了继承,一般的规则是将所有的数据成员都指定为private,将所有的方法指定为public。
3.导出类的构建过程是从基类“向外”扩散的,所以基类在导出类构造器可以访问它之前,就已经完成初始化。
4.如果没有默认的基类构造器,或者想调用一个带参数的基类构造器,就必须用关键字super显式地编写调用基类构造器的语句,并且配以适当的参数列表。
5.虽然编译器强制你去初始化基类,并且要求你要在构造器起始处就要这么做,但是它并不监督你必须将成员对象也初始化。
6.在清理方法中,必须注意奥对基类清理方法和成员对象清理方法的调用顺序,以防对某个子对象依赖于另一个子对象的发生。一般,首先,执行类的所有特定的清理动作,其顺序同生成顺序相反。
6.最好的方法是除了内存之外,不能依赖垃圾回收器去做任何事。如果需要进行清理,最好是编写你自己的清理方法,而不是使用finalize()。
7.如果Java的基类拥有某个已被多次重载的方法名称,那么在导出类中重新定义该方法名称不会屏蔽其在基类中的任何版本。(这一点和C++不同)
8.使用与基类完全相同的特征签名和返回类型来覆盖具有相同名称的方法,是一件极其平常的是。(C++不允许这样做)
9.在方法之前加上@Overide注解可以防止你在不想重载的时候而意外地进行了重载。
10.由于继承可以确保基类中的所有方法在导出类中也同样有效,所以能够向基类发送的所有信息也可以向导出类发送。
11.在Java中,final关键字类似于C中的关键字const。
12.带有恒定初始值的final static基本类型全用大写字母命名,并且在字与字之间用下划线隔开。
13.Java允许生成“空白final”,所谓空白final是指被声明为final但又未给定初始值的域。无论什么情况,编译器都确保空白final在使用之前必须被初始化。必须在域的定义处或者每个构造器中用表达式对final进行赋值,这正是final域在使用前总被初始化的原因所在。
14.当将某个类的整体定义为final时,就表明了你不打算继承该类,也不允许别人这么做。