切記:不要將多型與多型性這二者混為一談,只要分開,就會很明朗了。
多型指的是一類事物有多種形態,(乙個抽象類有多個子類,因而多型的概念依賴於繼承)。
比如:動物分為人類、狗類、豬類(在定義角度)
import abcclass animal(metaclass=abc.abcmeta): #同一類事物:動物
@abc.abstractmethod #要求子類必須實現talk功能
def talk(self):
pass
class people(animal): #動物的形態之一:人
def talk(self):
print('say hello')
class dog(animal): #動物的形態之二:狗
def talk(self):
print('say wangwang')
class pig(animal): #動物的形態之三:豬
def talk(self):
print('say hengheng')
1、什麼是多型性(請務必注意注意注意:多型與多型性是兩種概念。)
多型性:同一種呼叫方式,不同的執行效果(多型性)(在呼叫角度)
#用上面的**(多型)peo1 = people() #例項化物件人類 peo1
dog1 = dog() #例項化物件狗類 dog1
pig1 = pig() #例項化物件狗類 pig1
def func(obj): #定義乙個函式,相當於乙個介面,
obj.talk() #傳來不同的例項化物件,最後實現的結果也不一樣
#以下雖然物件不一樣,但是呼叫的方法是一樣的,這就是 多型性
func(peo1)
func(dog1)
func(pig1)
----------------輸出結果-------------------
say hello
say wangwang
say hengheng
2、多型性的好處
1.增加了程式的靈活性
以不變應萬變,不論物件千變萬化,使用者都是同一種形式去呼叫,如func(animal)
2.增加了程式額可擴充套件性
通過繼承animal類建立了乙個新的類,使用者無需更改自己的**,還是用func(animal)去呼叫
class cat(animal): #新增一種動物類 貓def talk(self):
print("say miaomiao")
#在上面**的基礎上
cat1 = cat() #例項化物件狗類 cat1
func(cat1) #呼叫函式(介面) 無需再自己定義,直接呼叫介面就行
----------------輸出結果---------------------
say miaomiao
java基礎之多型性
物件導向特徵 多型性 1 多型性 乙個事物的多種形態。如 方法的過載和重寫 子類物件的多型性 虛擬方法呼叫 父類引用指向子類的物件實體,當呼叫方法時,執行的是子類重寫父類的方法 2 子類物件的多型性使用的前提 要有繼承性 要有子類對父類方法的重寫。3 程式執行分成編譯時和執行時狀態。對於多型性來說,...
物件導向之 多型與多型性
1.什麼是多型?多型指的是同一種事物的多種形態。水 冰,水蒸氣,液態水 2.為何要用多型?多型性 繼承同乙個類的多個子類中有相同的方法名 那麼子類產生的物件就可以不用考慮具體的型別而直接呼叫功能 3,如何用?例如 import abc class animal metaclass abc.abcme...
Python 多型與多型性
同一種事務的多種形態 就是多型 車有多種形態,你沒有具體學習某乙個物件,你是學的怎麼開車 這就是多型性 1 增加了程式的靈活性 以不變應萬變,不論物件千變萬化,使用者都是同一種形式去呼叫,如func animal 2 增加了程式可擴充套件性 通過繼承animal類建立了乙個新的類,使用者無需改變自己...