繼承的兩種用途:
1.繼承基類的方法,並且做出自己的改變或者擴展(代碼復用)
2.聲明某個子類兼容於某基類,定義一個接口類Interface,接口類中定義了一些接口名(就是函數名)且並未實現
接口的功能,子類繼承接口類,並且實現接口中的功能。
一、什么是抽象類
與java一樣,python也有抽象類的概念,但是需要借助模塊實現。抽象類是一個特殊的類,它的特殊之處在於只
能被繼承,不能被實例化。
抽象類與普通類的不同之處在於:抽象類中只能有抽象方法(沒有實現功能),該類不能被實例化,只能被繼承,
且子類必須實現抽象方法。
二、什么是接口
接口可以理解為自己給使用者來調用自己功能方法的入口。
三、為什么要用接口
(1)可以實現權限控制,比如可以通過接口做一下訪問控制,可以允許或者拒絕調用者的一些操作。
(2)降低了使用者的使用難度,使用者只需要知道怎么調用即可,不需要知道里邊的具體實現方法。
import abc
class Interface(metaclass=abc.ABCMeta):
# 定義接口Interface類來模仿接口的概念,python中沒有interface關鍵字來定義一個接口。
@abc.abstractmethod
def read(self): # 定接口函數read
pass
@abc.abstractmethod
def write(self): # 定義接口函數write
pass
class Txt(Interface): # 文本,具體實現read和write
def read(self):
print('文本數據的讀取方法')
def write(self):
print('文本數據的讀取方法')
class Sata(Interface): # 磁盤,具體實現read和write
def read(self):
print('硬盤數據的讀取方法')
def write(self):
print('硬盤數據的讀取方法')
四、抽象類與接口
抽象類的本質還是類,指的是一組類的相似性,包括數據屬性(如all_type)和函數屬性(如read、write),而
接口只強調函數屬性的相似性。
抽象類是一個介於類和接口直接的一個概念,同時具備類和接口的部分特性,可以用來實現歸一化設計
五、接口與歸一化設計
歸一化讓使用者無需關心對象的類是什么,只需要知道這些對象都具備某些功能就可以了,這極大地降低了使用
者的使用難度。
歸一化使得高層的外部使用者可以不加區分的處理所有接口兼容的對象集合。
