多態
多態的特性是調用不一樣的子類將會產生不一樣的行爲,而無需明確知道這個子類其實是什麼
html
說白了就是,不一樣的對象調用相同的方法,產生不一樣的行爲python
例如:s1是字符串類型,w1是列表,兩個徹底不一樣的對象,他們均可以調用len方法,而得出的結果不一樣post
多態其實是依附於繼承的兩種含義:"改變"和"擴展"自己就意味着必須有機制去選用你改變/擴展過的版本,多態實質上就是繼承的實現細節;url
子類實例化後調用基類的方法,w1.turn_ice()叫作多態;spa
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)