什麼是多型?多型就是一種事物有多種形態,比如說動物,有 貓、狗、老鼠、獅子、大象等。
多型的好處:比如我們在新建立類時我們可以繼承動物類,動物類中的方法可以重寫,也可以不重寫,當我們新增時,只是新增乙個animals類而不需要再去修改父類**裡的內容,只需要呼叫就可以了。
多型的最基本的實現就是通過繼承來實現的。
首先我們先建立乙個動物類。動物有名字,會吃,會叫。
class animals(object):
def __init__(self,name):
self.name=name
def eat(self):
print(self.name,'eat')
def say(self):
print(self.name,'say:~~')
這個時候我們就創造了乙個animals類其中有屬性name,還有吃,和叫。
之後用到我們上次講到的繼承。
建立乙個cat類。
from animals import animals
class cat(animals):
def __init__(self,name):
animals.__init__(self,name)
def say(self):
print(self.name,'say:miao~miao~')
這個時候我們繼承animals類,傳入引數name,在__init__(self,name)這個方法之後,我們的cat類就會自動建立繼承來自父類的方法:eat 和say,屬性:name,在多型中我們可以不重寫父類的方法,直接繼承,也可以自己重寫方法,在呼叫的時候會呼叫子類中重寫的方法。
同樣的道理,我們建立乙個dog類。
from animals import animals
class dog(animals):
def __init__(self,name):
animals.__init__(self,name)
def say(self):
print(self.name,'say:wang~wang~')
同樣是重寫say方法。這個時候我們可以在建立乙個.py檔案來測試一下我們建立屬性後呼叫的方法都是什麼。
from cat import cat
from dog import dog
cat=cat("tom")
dog=dog("xiaobai")
cat.say()
dog.say()
cat.eat()
dog.eat()
給cat例項化乙個物件叫做:tom,給dog例項化乙個物件叫做:xiaobai
分別呼叫say和eat方法。結果顯示:
這個時候我們可以看到在父類animals中定義的say為 say:~~ 但是在字類中重寫方法之後再呼叫就會輸出子類中重寫的方法。
這個就體驗出了多型的靈活性,可以再子類中重寫方法,但是對其他並不影響。
如果還是不太明白的話,我們可以再建立乙個獅子類:
from animals import animals
class lion(animals):
def __init__(self,name):
animals.__init__(self,name)
def eat(self):
print(self.name,'self find food to eat')
在獅子類中,我們重寫eat方法讓它自己找食物吃,然後再主函式中進行例項化物件叫:tiger再讓它say和eat的時候,呼叫的say是父類中的say,但是eat就是我們重寫的方法。
這就是多型。
Python物件導向08 多型
物件導向三大特性 封裝根據職責將屬性和方法封裝到乙個抽象的類中 繼承實現 的重用,相同的 不需要重複的編寫 多型不同的子類物件呼叫相同的父類方法,產生不同的執行結果 需求 在dog類中封裝方法game 定義xiaotiandog繼承自dog,並且重寫game方法 定義person類,並且封裝乙個和狗...
Python物件導向(七)多型
當子類和父類都存在相同的run 方法時,我們說,子類的run 覆蓋了父類的run 在 執行的時候,總是會呼叫子類的run 這樣,我們就獲得了繼承的另乙個好處 多型。a list a是list型別 b animal b是animal型別 c dog c是dog型別 判斷乙個變數是否是某個型別可以用is...
Python物件導向 多型特性
目錄 一.多型 多型就是不同子類物件呼叫父類的方法產生不同的結果。二.使用不同的支付工具給商店支付錢 1 思路 首先人去商店買東西,要付錢,先要有人 然後人要選擇支付工具,要有支付方式 我們最近的支付方式有 支付寶支付,蘋果支付.最後人消費的這個行為,人用什麼支付工具,要支付多少錢 2 三.檔案系統...