多型的概念
類的多型是類的重要特性,它可以讓例項在呼叫他們的共同屬性時不考慮具體的類,體現的是一種執行時的繫結關係(動態繫結)
類的多型體現在同乙個類例項化出來的物件呼叫同乙個方法,執行的邏輯不相同
注意:體現類的多型有兩個條件:1.有子類的繼承 2.子類需要呼叫這個方法
所以,多型算是繼承的實現細節
多型的實現
#不同的類例項化出來的物件呼叫同乙個方法實現的邏輯不同,這體現了類的多型
class
h2o:
def__init__
(self, name, temperature)
: self.name = name
self.temperature = temperature
defturn_form
(self)
:if self.temperature <0:
print
("%s 溫度太低結冰了"
% self.name)
if self.temperature >
0and self.temperature <
100:
print
("%s 液化成水了"
% self.name)
if self.temperature >
100:
print
("%s 溫度太高汽化了"
% self.name)
class
ice(h2o)
:pass
class
water
(h2o)
:pass
class
steam
(h2o)
:pass
w = water(
"水",25)
i = ice(
"冰",-5
)s = steam(
"蒸汽"
,120
)w.turn_form(
)i.turn_form(
)s.turn_form(
)
python的資料型別本質上也是通過類實現的,所以不同的資料型別呼叫len()函式的執行,其實也體現了一種多型
資料可以通過str(),list()的方式來實現,這說明了資料也是通過str、list類來實現的,在python中,一切皆物件
s =
"abc"
l =[
"a",
"b",
"c"]
print
(len
(s))
print
(s.__len__())
#len()函式的本質其實是呼叫物件的.__len__()方法
print
(len
(l))
print
(l.__len__(
))
len()函式模擬
class
h2o:
def__init__
(self, name, temperature)
: self.name = name
self.temperature = temperature
defturn_form
(self)
:if self.temperature <0:
print
("%s 溫度太低結冰了"
% self.name)
if self.temperature >
0and self.temperature <
100:
print
("%s 液化成水了"
% self.name)
if self.temperature >
100:
print
("%s 溫度太高汽化了"
% self.name)
defturn_form
(obj)
:#這就是len函式的本質,呼叫了資料類的__len__方法
return obj.turn_form(
)class
ice(h2o)
:pass
class
water
(h2o)
:pass
class
steam
(h2o)
:pass
w = water(
"水",25)
i = ice(
"冰",-5
)s = steam(
"蒸汽"
,120
)w.turn_form(
)i.turn_form(
)s.turn_form(
)turn_form(w)
turn_form(i)
turn_form(s)
物件導向特性 多型
1 抽象類和方法 只在父類中宣告,在子類中實現,用abstract宣告。作用是給子類作規範。規則 抽象類不能例項化,只能被繼承 抽象方法必須被子類方法重寫。建立 abstract class computer 抽象類裡面的抽象方法必須在子類裡面重寫,不然會報錯。abstract class comp...
物件導向特性 多型
動態繫結 父類的引用,引用子類的物件 直接賦值 student stu newcollegestudent df soft 方法傳參 3.返回值接收 滿足動態繫結的條件 向上轉型並且通過父類呼叫子類重寫的方法 編譯時 呼叫父類的方法 執行時 呼叫子類重寫的方法。子類實現父類同名方法,並且引數的型別和...
物件導向的特性 多型
1.虛函式 在類的成員函式前加virtual即構成虛函式。作用是通過基類的指標與引用呼叫派生類的成員函式 2.多型的概念 多型即多種形態,通過呼叫不同的函式實現不同的功能。如買票機制,不同的物件買票的制度也不同,如普通人買全票,學生可買半價票等。3.多型的條件 1 虛函式的重寫 子類定義乙個與父類的...