第17條:要麼為繼承而設計,並提供文件說明,要麼就禁止繼承

zhumeilu發表於2017-12-14

當父類中的某一個方法呼叫了另一個可以被繼承的方法時,如果子類重寫了該方法,則會出錯。

public class Super{
  public void method1(){
    //todo
  }
   public void method2(){
    //todo
    method1();
  }
}
public class Sub{
  public void method1(){
    //重寫該方法
  }
  //這個時候如果Sub的例項呼叫了method2的時候,就會發生意想不到的錯誤。因為method1方法已經被重寫了。
}
複製程式碼

所以,如果編寫一個可以被繼承的類,則必須保證這個類永遠不會呼叫它的任何可被覆蓋方法。

相關文章