方法重寫(Override)

Hello_xzy_Word發表於2020-11-17

方法重寫(Override)


“兩同兩小一大”規則

方法的重寫需要遵循“兩同兩小一大”規則:

  • “兩同”:方法名相同,引數列表相同
  • “兩小”:子類方法返回值型別應該比父類方法返回值型別更小或相等;子類方法宣告丟擲的異常應該比父類方法宣告丟擲的異常更小或相等。
  • “一大”:子類方法的訪問許可權應該比父類方法更大或相等。

里氏替換原則

里氏替換原則(Liskov Substitution Principle,LSP)由麻省理工學院電腦科學實驗室的里斯科夫(Liskov)女士在 1987 年的“物件導向技術的高峰會議”(OOPSLA)上發表的一篇文章《資料抽象和層次》(Data Abstraction and Hierarchy)中提出:繼承必須確保超類擁有的性質在子類中仍然成立(Inheritance should ensure that any property proved about supertype objects also holds for subtype objects)。也就是說:當一個子類的例項能夠替換任何父類的例項時,它們之間才具有is-A關係。

里氏替換原則主要闡述了有關繼承的一些原則,即什麼時候應該使用繼承,什麼時候不應該使用繼承,以及其中蘊含的原理。里氏替換原則是繼承複用的基礎,它反映了基類與子類之間的關係,是開閉原則的補充,是實現抽象化的具體步驟的規範。

里氏替換原則通俗的講就是:子類可以擴充父類的功能,但不能改變父類原有的功能。也就是說:由父類派生出子類時,除了新增新的方法完成新增功能外,儘量不要重寫父類的方法。

如果通過重寫父類的方法來完成新的功能,這樣寫起來雖然簡單,但是整個繼承體系的可複用性會比較差,特別是運用多型比較頻繁時,程式執行出錯的概率會很大。

相關文章