python 面向對象 多態 封裝
阿新 • • 發佈:2018-08-29
nim light alipay func mil nbsp cat self 什麽是
多態
什麽是多態?
一個類表現出的多種狀態,通過繼承來實現
例如Animal類表現出了Dog,Cat兩種形態
class Animal:pass
class Dog(Animal):pass
class Cat(Animal):pass
wc = Dog()
def func(name,age): print(name,age) func(1,2) class Payment:pass class ApplePay(Payment): def pay(self):pass class Alipay(Payment): def pay(self):pass def pay(obj,money): #在python中無需指定傳輸數據類型,隨意傳任意類型 obj.pay() app = ApplePay() print(type(app)) pay(app,123)
多態在java中的表現:
在一個函數中需要給參數指定數據類型,如果這個地方可以接收兩個以上類型的參數,那麽這些類型應該有一個父類,這個父類是所有子類對象的類型。
def func(Cat mao):pass
def func(Dog gou):pass
def func(Animal gou|mao):pass
多態在python中的表現:
函數的參數不需要指定數據類型,所以我們也不需要通過繼承的形式來統一一組類的類型,換句話說 所有的對象其實都是object類型,所以在python當中其實處處是多態
鴨子類型:
所有的對象都是鴨子類型,不是明確的通過繼承實現的多態,而是通過一個模糊的概念來判斷這個函數能不能接受這個類型的參數
python 面向對象 多態 封裝