多型指的是一類事物有多種形態,多型性是指在不考慮例項型別的情況下使用例項
class animals:
def run(self):
print('running')
class dog(animals):
def run(self):
print('dog is running')
class pig(animals):
def run(self):
print('pig is running')
def func(animal):
animal.run()
dog = dog()
func(dog)
pig = pig()
func(pig)
pig 和dog都是動物,都會有run 功能,我們在使用例項時不必考慮是pig還是dog,只要是動物,就會有run。
我們可以定義乙個功能,func,傳入dog時,列印dog is running,傳入pig時
pig is running。
class cat(animals):
def run(self):
print('cat is running')
cat = cat()
func(cat)
如果我們新增乙個類,此時不必對func做任何修改,只知道它是animals型別,就能直接呼叫cat,這就是多型。只要func函式正常,我們只要知道它是animals型別,不用修改函式func,只管呼叫就可以,即使新增了類,只要保證是同一型別,都可以同一種形式去呼叫,增加了程式的靈活性和可擴充套件性。
更進一步,則不一定需要傳入animals型別。我們只需要保證傳入的物件有乙個run()方法就可以了:
class car:
def run(self):
print('car is running')
car = car()
func(car)
car is running
這就是動態語言的「鴨子型別」,乙個物件只要「看起來像鴨子,走起路來像鴨子」,那它就可以被看做是鴨子,就像之前學過的序列型別有多種形態:字串,列表,元組,但他們直接沒有直接的繼承關係,都可以用 len()方法一樣。 物件導向之多型
多型即事物存在的多種形態 要有繼承 要有方法重寫 要有父類引用指向子類物件 1,多型中的成員訪問特點之成員變數 編譯看左邊 父類 執行看左邊 父類 2,多型中的成員訪問特點之成員方法 編譯看左邊 父類 執行看右邊 子類 3,多型中的成員訪問特點之靜態成員方法 編譯看左邊 父類 執行看左邊 父類 總結...
物件導向之多型
多型指的是一類事物有多種形態 動物有多種形態 人,狗,豬 import abc class animal metaclass abc.abcmeta 同一類事物 動物 abc.abstractmethod deftalk self pass class people animal 動物的形態之一 人...
物件導向之多型
1.1多型的概述 1.2多型的體現 1.3多型的前提 1.4多型的格式 2.1多型的使用 package csdn public class person public void setname string name public intgetage public void setage int ...