多型的特性是呼叫不同的子類將會產生不同的行為,而無需明確知道這個子類實際上是什麼
說白了就是,不同的物件呼叫相同的方法,產生不同的行為
例如:s1是字串型別,w1是列表,兩個完全不同的物件,他們都可以呼叫len方法,而得出的結果不同
多型實際上是依附於繼承的兩種含義:"改變"和"擴充套件"本身就意味著必須有機制去選用你改變/擴充套件過的版本,多型實質上就是繼承的實現細節;
子類例項化後呼叫基類的方法,w1.turn_ice()叫做多型;
class h20:def __init__(self,name,temerature):
self.name = name
self.temerature = temerature
def turn_ice(self):
if self.temerature < 0:
print("[%s]溫度太低結冰了"%self.name)
elif self.temerature > 0 and self.temerature < 100:
print("[%s]液化成水" % self.name)
elif self.temerature > 100:
print("[%s]溫度太高變成水蒸氣" % self.name)
class water(h20):
pass
class ice(h20):
pass
class steam(h20):
pass
w1 = water("水",25)
i1 = ice("冰",-20)
s1 = steam("水蒸氣",3000)
w1.turn_ice() #執行過程中不同的物件呼叫相同的方法
i1.turn_ice()
s1.turn_ice()
#或者定義乙個介面來執行上面的呼叫
def func(obj):
obj.turn_ice()
func(w1)
func(i1)
func(s1)
多型的特性是呼叫不同的子類將會產生不同的行為,而無需明確知道這個子類實際上是什麼
說白了就是,不同的物件呼叫相同的方法,產生不同的行為例如:s1是字串型別,w1是列表,兩個完全不同的物件,他們都可以呼叫len方法,而得出的結果不同
多型實際上是依附於繼承的兩種含義:"改變"和"擴充套件"本身就意味著必須有機制去選用你改變/擴充套件過的版本,多型實質上就是繼承的實現細節;
子類例項化後呼叫基類的方法,w1.turn_ice()叫做多型;
class h20:def __init__(self,name,temerature):
self.name = name
self.temerature = temerature
def turn_ice(self):
if self.temerature < 0:
print("[%s]溫度太低結冰了"%self.name)
elif self.temerature > 0 and self.temerature < 100:
print("[%s]液化成水" % self.name)
elif self.temerature > 100:
print("[%s]溫度太高變成水蒸氣" % self.name)
class water(h20):
pass
class ice(h20):
pass
class steam(h20):
pass
w1 = water("水",25)
i1 = ice("冰",-20)
s1 = steam("水蒸氣",3000)
w1.turn_ice() #執行過程中不同的物件呼叫相同的方法
i1.turn_ice()
s1.turn_ice()
#或者定義乙個介面來執行上面的呼叫
def func(obj):
obj.turn_ice()
func(w1)
func(i1)
func(s1)
物件導向三大特性之多型
多型 同乙個物件在不同時刻表現出來的不同狀態。多型的前提和體現 存在繼承關係或者實現關係 這裡的實現是指介面間的關係 有方法的重寫。有父類引用指向子類物件。多型中成員的訪問特點 訪問成員變數時 首先定義乙個動物類 其次定義乙個子類來繼承它 定義乙個測試類 由此可見當我們用多型的形式去訪問類中的成員變...
物件導向三大特性之多型
本想自己寫 但是發現乙個更好的。抽象類的多型 場景描述 一位剛畢業的老師,目前只能通過騎車上班,多年後終於坐騎公升級了,有了自己的小汽車,於是騎著小汽車上班。騎自行車上班 1.自行車類 public class bike public void stop 2.教師類 public class tea...
物件導向三大特性之多型
多型更像是一種思想,而並非具體的技術。因為繼承的存在,從而引發了多型,python本就是多型的形式,就像現實世界一樣。都是起源於某一單細胞生物但是經過不斷的演化差異化越來越大。多型的定義即是 在不同的類中例項化得到的物件下的相同的方法,實現的過程不一樣。這個就很有意思了.多型的前提是必須有繼承的支援...