C base和this的區別

2021-06-22 16:18:36 字數 947 閱讀 6041

①• base常用於,在派生類物件初始化時和基類進行通訊。

②• base可以訪問基類的公有成員和受保護成員,私有成員是不可訪問的。

③• this指代類物件本身,用於訪問本類的所有常量、字段、屬性和方法成員,而且不管訪問元素是任何訪問級別。因為,this僅僅侷限於物件內部,物件外部是無法看到的,這就是this的基本思想。另外,靜態成員不是物件的一部分,因此不能在靜態方法中引用this。

④• 在多層繼承中,base可以指向的父類的方法有兩種情況:一是有過載存在的情況下,base將指向直接繼承的父類成員的方法,例如audi類中的showresult方法中,使用base訪問的將是car.showresult()方法,而不能訪問vehicle.showresult()方法;而是沒有過載存在的情況下,base可以指向任何上級父類的公有或者受保護方法,例如audi類中,可以使用base訪問基類vehicle.run()方法。這些我們可以使用ildasm.exe,從il**中得到答案。【base訪問的是直接的上級父類,但是執行順序是從object的基類開始執行的】

4. 通用規則

①• 盡量少用或者不用base和this。除了決議子類的名稱衝突和在乙個建構函式中呼叫其他的建構函式之外,base和this的使用容易引起不必要的結果。

②• 在靜態成員中使用base和this都是不允許的。原因是,base和this訪問的都是類的例項,也就是物件,而靜態成員只能由類來訪問,不能由物件來訪問。

③• base是為了實現多型而設計的。

④• 使用this或base關鍵字只能指定乙個建構函式,也就是說不可同時將this和base作用在乙個建構函式上。

⑤• 簡單的來說,base用於在派生類中訪問重寫的基類成員;而this用於訪問本類的成員,當然也包括繼承而來公有和保護成員。

⑥• 除了base,訪問基類成員的另外一種方式是:顯示的型別轉換來實現。只是該方法不能為靜態方

具體詳細解釋見:

C base的用法(冒號後面的base)

我前寫過一篇文章叫 c this的用法 冒號後面的this 文字寫的多了感覺是沒有必要的,能說明白,或者看的人能夠悟到就可以了 1.this是標識當前資源物件的,而base是基於父級的。2.base發揮了期靈魂級的作用 多型 3.base子類可以訪問父類成員 4.base呼叫父類方法必須重寫父類方法...

關於C base關鍵字的記憶體分析

最近做了幾道面試題,發現base關鍵字出的題目還比較多。所以在這裡針對base關鍵字做乙個記憶體的剖析,希望日後可以用到。先看下面一道題目 最後在main方法中例項化子類testchild,並且呼叫其show方法。問輸出結果是什麼?testchild child new testchild chil...

mysql的 和 的區別 和 的區別

他們之間的區別用最直接的話來說就是 相當於對資料 加上 雙引號,相當於直接顯示資料。1 對傳入的引數視為字串,也就是它會預編譯select from user where name 比如我傳乙個csdn,那麼傳過來就是select from user where name csdn 2 將不會將傳入...