包含與繼承

2021-06-05 23:48:56 字數 711 閱讀 6220

在《**大全》這本書的第六章中提到了有關包含與繼承的一些原則,我摘取如下:

一、包含("has a")

包含表示乙個類含有乙個基本資料元素或物件。包含是物件導向程式設計的主力技術。

(1)通過包含來實現"has a"的關係。

(2)在萬不得已時通過private繼承來實現"has a"的關係。

(3)警惕有超過有7個資料成員的類。

二、繼承("is a")

繼承的概念是說乙個類是另乙個類的一種特化。

(1)採用public繼承實現"is a"的關係。

(2)要麼採用繼承並進行詳細說明,要麼就不要用它。

(3)確保只繼承需要繼承的部分。派生類可以繼承成員函式的介面和/或實現。

(4)不要"覆蓋"乙個不可覆蓋的成員函式。派生類中的成員函式不要與基類中不可覆蓋的成員函式重名。

(5)盡量使用多型,避免大量的型別檢查。

(6)讓所有的資料都是private而非protected。

三、何時使用繼承、何時使用包含

(1)如果多個類共享資料而非行為,應該建立這些類可以包含的共用物件。

(2)如果多個類共享行為而非資料,應該讓它們從共同的基類繼承而來,並在基類裡定義共用的子程式。

(3)如果多個類既共享行為又共享資料,應該讓它們從共同的基類繼承而來,並在基類裡定義共用的資料和子程式。

(4)當你想由基類控制介面時,使用繼承;當你想自己控制介面時,使用包含。

私有繼承與包含

c 要實現has a關係,除了包含,還可以使用私有繼承。私有繼承的基類所有public,protected方法都會變成派生類中的private方法,這意味著基類方法不會成為派生類公有介面一部分,即只能通過派生類的基類成員呼叫基類方法。私有繼承的語法 用private修飾基類 private是預設修飾...

C 包含與繼承

class point double getx double gety void setx double x void sety double y class line intmain class point double getx double gety void setx double x vo...

flask 包含,繼承,巨集

包含,繼承,巨集 都是為了提高 的效率,都是為了防止 的沉餘,浪費資源 巨集 macro 可以把它看做jinja2中的乙個函式,他會返回乙個模板或者html字串,為了避免反覆的編寫同樣的模板 出現 沉餘,可以把它們協程函式以進行重用,需要在多出重複使用的模板 片段可以寫入單獨的檔案,在包含在所有模板...