物件導向 八 三大特性之多型

2022-10-11 13:15:10 字數 2433 閱讀 2230

多型的特性是呼叫不同的子類將會產生不同的行為,而無需明確知道這個子類實際上是什麼

說白了就是,不同的物件呼叫相同的方法,產生不同的行為

例如: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本就是多型的形式,就像現實世界一樣。都是起源於某一單細胞生物但是經過不斷的演化差異化越來越大。多型的定義即是 在不同的類中例項化得到的物件下的相同的方法,實現的過程不一樣。這個就很有意思了.多型的前提是必須有繼承的支援...