代碼大全-繼承

繼承是Is-A的關係。曾經看到有人爲了複用而使用了繼承:有一個Base類,裏面寫了不少Common的方法,不少類繼承自這個類,這種作飯就是把Has-A用Is-A來實現的。spa

繼承的概念是說一個類是另外一個類的特化。對象

Liskov替換原則:派生類必須可以經過基類的接口而被使用,且使用者無需瞭解二者之間的差別。該原則感受下來是爲了保證繼承的語義沒有變,這樣即可以控制繼承的複雜度。繼承

針對繼承的一些原則:接口

  • 若是多個類共享數據而非行爲,應該建立這些類能夠包含的共用對象(Has-A)。
  • 若是多個類共享行爲而非數據,應該讓它們從共同的基類繼承而來,並在基類中定義共用的子程序,這裏容易迷糊:這樣作的前提是要看是否是Is-A的關係,若是不是,仍是不建議使用繼承,而是把這些共享的行爲放入公用對象,而後引用這個共用對象。
  • 若是多個類既共享數據也共享行爲,應該讓它們從一個共同的基類繼承而來,基類中定義共用的數據和子程序
  • 當想在基類中控制接口時,使用繼承,當想本身控制接口時,使用包含。
  • 避免讓繼承體系過深,不要超過三層,另外子類的數量建議7+—2
  • 當大量出現switch、case時,能夠考慮使用繼承,使用多態健身case的類型check。
相關文章
相關標籤/搜索