对于为了继承而设计的类,唯一的测试方法就是编写子类。
为了继承,类还必须遵守其他一些约束。构造器绝不能调用可被覆盖的方法,无论是直接调用还是间接调用。
无论是clone还是readObject,都不可以调用可覆盖的方法,不管是以直接还是间接的方式。
为了继承而设计的类,对这个类会有一些实质性的限制。
对于那些并非为了安全地进行子类化而设计和编写文档的类,要禁止子类化。

有两种方法可以禁止子类化:比较容易的是把这个类声明为final的。另一种方法是把所有的构造器都变成私有的,或者包级私有的,
并增加一些公有的静态工厂来代替构造器。

如果具体的类没有实现标准的接口,那么禁止继承可能会给有些程序员带来不便。


你可以机械地消除类中可覆盖方法的自用特性,而不改变它的行为。将每个可覆盖方法的代码体移到一个私有的“辅助方法”中,
并且让每个可覆盖的方法调用私有辅助方法。然后,用“直接调用可覆盖方法的私有辅助方法”来代替“可覆盖方法的每个自用调用”。
posted on 2017-10-16 10:23  飞奔的菜鸟  阅读(330)  评论(0)    收藏  举报