繼承順序與封裝結合的2個例子

2022-05-07 16:54:16 字數 1189 閱讀 9902

有2個例子能很好地幫助我們理解繼承順序(例子**海峰老師的講課):

例一:

class

a:

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")

例二:

class

a:

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面試還是第一次見識。可能偶面試經驗少吧 不超過十次 面試題目裡面有乙個問題很適合用來作為繼承的講解例子。因為這個例子實在太美妙了,忍不住做了一下,並試著分...

使用繼承和使用組合的乙個例子

需求如下 實現對帳功能 兩個平台用來保持資料一致性的乙個方法 有兩種方式,一種是已經有完整的對帳記錄,可直接拿來對帳,另一種只提供乙個關鍵字,對帳之前需要先根據該關鍵字查詢以獲得對帳記錄。對帳功能在現有系統中已有兩個版本的實現了 一種是定時對帳,另一種是手工填寫資訊進行對帳。這兩種可歸納為同一種型別...