第17条:要么为继承而设计,并提供文档说明,要么就禁止继承

219 阅读1分钟

当父类中的某一个方法调用了另一个可以被继承的方法时,如果子类重写了该方法,则会出错。

public class Super{
  public void method1(){
    //todo
  }
   public void method2(){
    //todo
    method1();
  }
}
public class Sub{
  public void method1(){
    //重写该方法
  }
  //这个时候如果Sub的实例调用了method2的时候,就会发生意想不到的错误。因为method1方法已经被重写了。
}

所以,如果编写一个可以被继承的类,则必须保证这个类永远不会调用它的任何可被覆盖方法。