介面類(抽象類):
在python中是沒有介面類,可以把介面類和抽象類視為同一種
定義:制定乙個規範
舉例:收到專案經理的要求,寫乙個支付:
#第一版class
alipay:
def__init__
(self,money):
self.money =money
defpay(self):
print('
zfb支付了%s
' %self.money)
class
jd:
def__init__
(self, money):
self.money =money
defpay(self):
print('
jd支付了%s
' %self.money)
a1 = alipay(200)
a1.pay()
a2 = jd(100)
a2.pay()
#第二版,改進:使支付的方法一樣
class
alipay:
def__init__
(self,money):
self.money =money
defpay(self):
print('
zfb支付了%s
' %self.money)
class
jd:
def__init__
(self, money):
self.money =money
defpay(self):
print('
jd支付了%s
' %self.money)
defpay(obj):
obj.pay()
a1 = alipay(200)
j1 = jd(100)
pay(a1)
#把a1這個方法傳給了pay()這個函式,通過其統一尋找訪問函式體裡的內容
#歸一化設計,可維護性提高
最後定義的pay()函式是在類之外的,每次把括號內的物件代入函式**塊中,
**塊內容裡呼叫pay()方法是先尋找本類,再尋找父類內.
由於兩個類中都有相同的pay()方法,通過這個外部的函式就可以實現統一的操作呼叫.
#class
alipay:
def__init__
(self, money):
self.money =money
defpay(self):
print('
zfb支付了%s
' %self.money)
class
jd:
def__init__
(self, money):
self.money =money
defpay(self):
print('
jd支付了%s
' %self.money)
class
wechatpay:
def__init__
(self, money):
self.money =money
defweixinpay(self):
print('
wx支付了%s
' %self.money)
defpay(obj):
obj.pay()##
w1 = wechatpay(300)
#w1.weixinpay() #此人新定義的類中沒有與前兩個類相同的pay()方法,無法實現所有類的歸一化操作
第四版 發回去重寫,制定乙個規則(抽象類,介面類)from abc import abcmeta,abstractmethod
#強制執行這個介面類
class payment(metaclass=abcmeta): #被所有的子類繼承,抽象類,介面類
@abstractmethod #裝飾器
def pay(self):
pass #制定了乙個規範,要求所有繼承我的子類都必須要有乙個pay()方法,無則在例項化的時候報錯
#重要的方法名,內容不需要有
class alipay(payment):
def __init__(self, money):
self.money = money
def pay(self):
print('zfb支付了%s' % self.money)
class jd(payment):
def __init__(self, money):
self.money = money
def pay(self):
print('jd支付了%s' % self.money)
class wechatpay(payment):
def __init__(self, money):
self.money = money
def pay(self):
print('wx支付了%s' % self.money)
def pay(obj):
obj.pay()
w1 = wechatpay(300) #此時,若這個類中沒有pay()方法則例項化失敗,會報錯
#想則必須要有
類 抽象類 介面
1.類 變數 靜態和非靜態 常量方法 靜態和非靜態 構造方法 游離塊靜態塊 內部類 靜態和非靜態 2.抽象類 類中可以定義抽象類都可以定義 抽象方法 特點 不能建立物件,不是因為沒有構造器或者構造器私有 3.介面 介面的概念 介面是功能的集合,同樣也是一種引用資料型別,是比 抽象類 更為抽象的類 介...
介面,抽象類
介面 用inte ce定義介面 由常量定義和方法定義兩部分組成 格式 修飾符 inte ce a extends b 在類中實現介面,方法名 返回值型別 引數的個數和型別必須與介面中完全一致 實現介面中所有方法 實現多個介面,中間用逗號分隔 抽象類包含抽象方法的乙個類 沒有足夠資訊描繪物件 用abs...
抽象類 介面
抽象類中的抽象方法禁止寫任何實現 1,a 抽象類不能被繼承 b 抽象方法不能有任何實現,一切實現都在子類中 c 抽象類中可以有非抽象方法,但是非抽象類絕對不能有抽象方法 class program public abstract class person public class chinese p...