物件導向2 繼承與派生

2021-08-15 19:39:00 字數 1844 閱讀 1523

1>繼承的概念

引入:先定義了乙個類a,然後又想新建立另外乙個類b,但是類b的大部分內容與類a是相同的,

我們不可能從新再寫乙個類b,這就用到了類的繼承的概念。

通過繼承的方式新建類b,讓b繼承a,b會『遺傳』a的所有屬性(資料屬性和函式屬性),

概念:繼承是指類與類之間的關係,是一種建立新類的方式,新建的類可以繼承乙個或多個父類(也叫基類或者超類),

新建的類叫子類或者派生類。繼承的功能之一就是用來解決**重用的問題

如果沒有指定基類,python的類會預設繼承object類,object是所有python類的基類,它提供了一些常見方法

(如__str__)的實現。

2>抽象的概念

抽取物件或者類之間比較相似的部分,它的主要作用是劃分類別,抽象只是分析的過程中得到類的乙個動作。先經歷抽象

這個過程,才能通過繼承的方式去表達出抽象的結構。

如,人,狗,貓可以抽象出動物,花草,樹木可以抽象出植物,動物和植物可以抽象出生物,類似這些。

3>**重用

用已經有的類建立乙個新的類,這樣就重用了已經有的軟體中的一部分設定大部分,大大節省了程式設計工作量,這就是常說

的**重用,不僅可以重用自己的類,也可以繼承別人的,比如標準庫,來定製新的資料型別。

4>屬性查詢順序(單繼承)

python中有單繼承 和多繼承

屬性(類包含資料屬性和函式屬性)查詢順序:物件自身(應該就是__init__下面的資料)-->類(找不到就找對應的類的)

-->父類(再找不到就往父類這樣層級往上找,找不到則丟擲異常)

注意下面這種的情況,謹記:誰呼叫函式,誰就是self,再按屬性查詢順序推導。

5>派生

子類新增自己新的屬性或者在自己這裡重新定義這些屬性(不會影響到父類)成為派生,若重新定義的屬性與父類重名,

那下次呼叫該屬性時,優先調取自己的,即遵循上面說的 屬性查詢順序。

6>屬性查詢順序(多繼承)---廣度優先

7>子類中呼叫父類屬性

7.1:父類名。父類方法

7.2:super()----注意區分跟上面的寫法

7.3 區別:類.方法 不依賴繼承關係,因為這種方式可以呼叫任何類下的方法

super依賴繼承關係,並且會按mro()方式依次查詢屬性

c 物件導向繼承與派生

概念 在 c 中,當定義乙個新的類 b 時,如果發現類 b 擁有某個已寫好的類 a 的全部特點,此外還有類 a 沒有的特點,那麼就不必從頭重寫類 b,而是可以把類 a 作為乙個 基類 也稱 父類 把類 b 寫為基類 a 的乙個 派生類 也稱 子類 這樣,就可以說從類 a 派生 出了類 b,也可以說類...

python物件導向程式設計 繼承與派生

一.什麼是繼承 繼承是一種新建類的方式,新建的類稱為子類,被繼承的類稱為父類 繼承的特性是 子類會遺傳父類的屬性 強調 繼承是類與類之間的關係 二.為什麼用繼承 因為繼承的好處就是可以減少 的冗餘 三.如何繼承 在python中支援乙個類同時繼承多個父類 在python3中 如果乙個類沒有繼承任何類...

繼承與派生2

編寫程式,宣告乙個基類shape,再派生出rectangle類和circle,二者都有getarea 函式,計算物件的面積。使用程式rectangle類建立乙個派生類square。includeusing namespace std class shape 圖形類 析構函式 virtual doub...