多型更像是一種思想,而並非具體的技術。
因為繼承的存在,從而引發了多型,python本就是多型的形式,就像現實世界一樣。都是起源於某一單細胞生物但是經過不斷的演化差異化越來越大。
多型的定義即是:在不同的類中例項化得到的物件下的相同的方法,實現的過程不一樣。這個就很有意思了...
多型的前提是必須有繼承的支援,並且在例項化後所呼叫某一父類共同的方法中體現出了不同的結果或者具有了不同的實現過程。否則就體現不出多型的意義。
classcanine(object):
"""犬類
"""def
howl(self):
"""吼叫
"""pass
class
husky(canine):
"""哈士奇
"""def
howl(self):
print("
蠢狗的叫聲...")
class
wolf(canine):
"""狼
"""def
howl(self):
print("
嗷嗚嗷嗚...")
h1 =husky()
h1.howl()
w1 = wolf() #
蠢狗的叫聲...
w1.howl() #
嗷嗚嗷嗚...
我不管你到底是不是鴨子,你具備了鴨子的特性我就認為你是鴨子。如:會嘎嘎嘎,走路搖搖晃晃,會游泳。
在python中的具體體現如下:
我覺得所有容器型別都能被
for
迴圈呼叫,那我就用for
迴圈一下容器試試,事實上也確實如此。注意:鴨子型別與繼承毫無關係。它強調的也是一種很抽象的關係,看起來像什麼就很大概率有那種東西的方法。
#並沒有定義犬類,但是依舊可以讓使用者覺得很方便。
#我認為哈士奇和狼都有叫的方法,那我就嘗試呼叫它。嘗試後發現果然我猜的沒錯!
#故鴨子型別與繼承無關 ps:這對使用者來說十分的便捷。
class
husky(canine):
"""哈士奇
"""def
howl(self):
print("
蠢狗的叫聲...")
class
wolf(canine):
"""狼
"""def
howl(self):
print("
嗷嗚嗷嗚...")
h1 =husky()
h1.howl()
w1 = wolf() #
蠢狗的叫聲...
w1.howl() #
嗷嗚嗷嗚...
物件導向三大特性之多型
多型 同乙個物件在不同時刻表現出來的不同狀態。多型的前提和體現 存在繼承關係或者實現關係 這裡的實現是指介面間的關係 有方法的重寫。有父類引用指向子類物件。多型中成員的訪問特點 訪問成員變數時 首先定義乙個動物類 其次定義乙個子類來繼承它 定義乙個測試類 由此可見當我們用多型的形式去訪問類中的成員變...
物件導向三大特性之多型
本想自己寫 但是發現乙個更好的。抽象類的多型 場景描述 一位剛畢業的老師,目前只能通過騎車上班,多年後終於坐騎公升級了,有了自己的小汽車,於是騎著小汽車上班。騎自行車上班 1.自行車類 public class bike public void stop 2.教師類 public class tea...
物件導向 三大特性之多型
在python當中 處處是多型 一切皆物件 廣義的多型 乙個類能表現出的多種形態 木頭 桌子 板凳 使用者 vip使用者 svip使用者 在物件導向方法中一般是這樣表述多型性 向不同的物件傳送同一條訊息 obj.func 是呼叫了obj的方法func,又稱為向obj傳送了一條訊息func 不同的物件...