有2個例子能很好地幫助我們理解繼承順序(例子**海峰老師的講課):
例一:
classa:
deffa(self):
print("
from a")
deftest(self):
self.fa()
class
b(a):
deffa(self):
print("
from b")
b =b()
b.test()
在上面的例子中,b 是b的乙個例項化物件,b.test()是例項呼叫類中的函式的方法,對於例項來說是繫結方法;b調test方法的順序:
----》b先在它自己那找,沒有----》再在b那找,也沒有----》再找到b的父類a,有,(下面是self.fa(),此時self是b,即self.fa()為b.fa() )
從b.fa()開始繼續找,----》先在它自己那找,沒有----》再在b那找,有,即執行 ----------》print("from b")
例二:
classa:
def__fa(self): #
_a__fa(self)
print("
from a")
deftest(self):
self.
__fa() #
self._a__fa()
class
b(a):
def__fa(self): #
_b__fa(self)
print("
from b")
b =b()
b.test() # b._a__fa()
與例子一對比,例子二中使用__下劃線對函式進行了封裝,雙下劃線函式在定義的時候就進行了相應的變形或叫做轉換,見上面**後的注釋,所以b.test()在呼叫test方法時順序:
----》b先在它自己那找,沒有----》再在b那找,也沒有----》再找到b的父類a,有,(下面是self.__fa(),此時self是b,即self.__fa()為b.__fa() ,轉化過來即為b._a__fa())
從b._a__fa()開始繼續找,----》先在它自己那找,沒有----》再在b那找,不一樣也沒有 ----》再在b的父類a那裡找,有,即執行 ----------》print("from a")
C 虛函式與繼承的乙個例子
通過隱含的this指標,也可以實現執行時多型 include class a int getdata virtual int dogetdata class b public a int dogetdata class c public b int main 這裡列印的結果是1,呼叫的是b中的get...
關於類的繼承的乙個例子
學習物件導向,繼承是乙個不得不說的問題。從c 開始,我們就學習繼承和介面。呵呵,昨天收到一間叫網龍公司的面試email,先發個試題來做的email面試還是第一次見識。可能偶面試經驗少吧 不超過十次 面試題目裡面有乙個問題很適合用來作為繼承的講解例子。因為這個例子實在太美妙了,忍不住做了一下,並試著分...
使用繼承和使用組合的乙個例子
需求如下 實現對帳功能 兩個平台用來保持資料一致性的乙個方法 有兩種方式,一種是已經有完整的對帳記錄,可直接拿來對帳,另一種只提供乙個關鍵字,對帳之前需要先根據該關鍵字查詢以獲得對帳記錄。對帳功能在現有系統中已有兩個版本的實現了 一種是定時對帳,另一種是手工填寫資訊進行對帳。這兩種可歸納為同一種型別...