1. 程式人生 > >面向對象——多態和多態性

面向對象——多態和多態性

bst 對象 面向 功能 write %s cpu 類重寫 屬性

1、什麽是多態:多態指的是同一種/類事物的不同形態(父類對象的多種(子類對象)狀態)
2、為什麽要使用多態?

# 多態性:在多套的背景下,可以不用考慮對象的具體類型的前提下直接使用對象
# 多態性的精髓:統一

3、如何使用多態

  1 imort abc
  2 class People(metaclass=abc.ABCMeta):
  3     def __init__(self, name):
  4         self.name = name
  5 
  6     @abc.abstractmethod
  7     def speak(self): pass
  8
9 class Chinese(People): 10 def speak(self): 11 print(‘說中國話‘) 12 13 class England(People): 14 def speak(self): 15 print(‘說英國話‘) 16 17 18 if __name__ == ‘__main__‘: 19 # 多態的體現:功能或是需求,需要父類的對象,可以傳入父類對象或任意子類對象均可以 20 # 註:一般都是規定需要父類對象,傳入子類對象
21 def ask_someone(obj): 22 print(‘讓%s上臺演講‘ % obj.name) # 父類提供,自己直接繼承 23 obj.speak() # 父類提供,只不過子類重寫了 24 25 ch = Chinese(‘王大錘‘) 26 en = England(‘Tom‘) 27 28 ask_someone(ch) 29 ask_someone(en) 30 31

鴨子類型
1、規定有什麽屬性及什麽方法的類的類型叫鴨子類型
2、能提供出規定的屬性與方法的對象就是鴨子

  1 class Disk:
  2     def read(self):
  3         print(‘Disk read‘)
  4 
  5     def write(self):
  6         print(‘Disk write‘)
  7 
  8 
  9 class Memory:
 10     def read(self):
 11         print(‘Mem read‘)
 12 
 13     def write(self):
 14         print(‘Mem write‘)
 15 
 16 
 17 class Cpu:
 18     def read(self):
 19         print(‘Cpu read‘)
 20 
 21     def write(self):
 22         print(‘Cpu write‘)
 23 
 24 
 25 obj1=Disk()
 26 obj2=Memory()
 27 obj3=Cpu()
 28 
 29 obj1.read()
 30 obj2.read()
 31 obj3.read()

面向對象——多態和多態性