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...