Python基礎之多型與多型性

2022-05-04 06:48:08 字數 1490 閱讀 4313

切記:不要將多型與多型性這二者混為一談,只要分開,就會很明朗了。

多型指的是一類事物有多種形態,(乙個抽象類有多個子類,因而多型的概念依賴於繼承)。

比如:動物分為人類、狗類、豬類(在定義角度)

import abc

class 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類建立了乙個新的類,使用者無需改變自己...