ex44 繼承與合成

2021-09-26 14:50:25 字數 2893 閱讀 5359

class

parent()

:def

override

(self)

:print

("parent override()"

)def

implicit

(self)

:print

("parent implicit()"

)def

altered

(self)

:print

("parent altered()"

)class

child

(parent)

:def

override

(self)

:print

("child override()"

)def

altered

(self)

:print

("child, before parent altered()"

)super()

.altered(

)print

("child, after parent altered()"

)dad = parent(

)son = child(

)# 隱式繼承,父類定義了implicit函式,但沒有在子類中定義,子類會從父類繼承所有的行為

dad.implicit(

)son.implicit(

)# 顯示繼承,子類override函式有乙個不同的行為,從而實現子類的新功能。

dad.override(

)son.override(

)# 在執行前或執行後替換,在繼承父類函式前或後再修改行為。使用python的內建函式super來呼叫父類裡的函式。

dad.altered(

)son.altered(

)result:

parent implicit(

)parent implicit(

)parent override(

)child override(

)parent altered(

)child, before parent altered(

)parent altered(

)child, after parent altered(

)

在python2.7中,繼承語法稍有不同,son類定義類似於下面這樣:

# 初始化

class

parent

(object):

def__init__

(self):-

-snip-

-class

son(parent)

:def

__init__

(self)

:super

(son,self)

.__init__()-

-snip--或

# 無需初始化

class

parent

(object):

deffunc

(self):-

-snip-

-class

son(parent)

:def

func

(self)

:super

(son,self)

.func()-

-snip-

-

函式super()需要兩個實參:子類名和物件self。為幫助python將父類和子類關聯起來,這些實參必不可少,另外,在python2.7中使用繼承是,務必在定義父類是在括號內指定object。

繼承是一種有用的技術,但也可以直接使用別的類和模組實現同樣功能。

class

other()

:def

override

(self)

:print

("other override()"

)def

implicit

(self)

:print

("other implicit()"

)def

altered

(self)

:print

("other altered()"

)class

child()

:def

__init__

(self)

: self.other = other(

)def

implicit

(self)

: self.other.implicit(

)def

override

(self)

:print

("child override()"

)def

altered

(self)

:print

("child, before other altered()"

) self.other.altered(

)print

("child, after other altered()"

)son = child(

)son.implicit(

)son.override(

)son.altered(

)result:

other implicit(

)child override(

)child, before other altered(

)other altered(

)child, after other altered(

)

44 繼承的方式

當乙個類從另乙個類繼承時,子類能夠從父類繼承到的是父類的公有型別的成員屬性和成員方法,以及保護型別的成員屬性和成員方法。這些子類從父類繼承得到的屬性和方法,在子類中是什麼型別?這個問題與派生類的定義有關,基類的說明前有public protected和private進行說明,將從父類繼承來的屬性和方...

C 4 4 多重繼承

定義 當乙個派生類具有兩個或多個基類時,這種派生方法成為多重繼承或多基類派生。語法形式 class 派生類名 繼承方式1 基類名1,繼承方式n 基類名n 示例 includeusing namespace std class x void visit 2 引數總表中包含完成所有基類初始化所需的引數個...

笨辦法學Python3 ex44 學習筆記

第44個練習是關於繼承。第乙個例子講的是隱式繼承,什麼是隱式繼承呢?簡單地說,當a類中存在的特性或方法x,而b類中沒有定義,直接從a類中繼承得來,這種方式得繼承就是隱式繼承。如下面得 ex44a.py class parent object defimplicit self print parent...