base和this關鍵字

2022-03-08 09:07:50 字數 1692 閱讀 5507

首先看乙個**例項:

class

baseclass

public baseclass(int

i) >");

}}class

derivedclass : baseclass

public derivedclass(int

i) >");

}}class

program

}

其輸出結果如下:

baseclass without parameters

derivedclass with

<100>

由輸出結果可以發現當建立派生類的例項時,首先會預設呼叫基類的預設建構函式,而後呼叫派生類中的建構函式。現對以上**中的 derivedclass 類做如下改變,新增base關鍵字:

public derivedclass(int i) : base

(i)>");

}

此時的輸出結果如下所示:

baseclass with <100>derivedclass with 

<100>

由輸出結果可以發現,派生類在呼叫基類建構函式時,呼叫了基類的有參建構函式,這是由於派生;類中的有參建構函式顯示的宣告了 base 關鍵字來初始化基類的建構函式。

除了在宣告派生類物件時初始化基類的建構函式外,base 關鍵字還可以實現在派生類中顯式的呼叫基類中的已被派生類重寫過的原方法,其用法如下所示:

class

baseclass

}class

derivedclass : baseclass

public

void

newshow()

}class

program

}

輸出結果如下所示:

derivedclass

baseclass

可以發現 derivedclass 類中的 newshow() 方法通過 base 關鍵字顯式地呼叫了基類 baseclass 中的 show() 方法,通過關鍵字 base 訪問的只能是直接基類中的成員。

this關鍵字的第乙個作用為:限定被相似的名稱隱藏的成員。其示例**如下:

class

person

}

在上述**的建構函式中,類的成員 name 與 方法中的引數重名,使得類的私有成員變數會被傳入的引數隱藏。若想要使用類的私有成員變數,可以使用關鍵字this限定,告訴編譯器此處的 name 式類的私有成員變數,而不是傳入引數 name。

this關鍵字的第二個作用為:將物件作為引數傳遞到其他方法。其示例**如下:

class

classa

}class

classb

}

在上述**中,classb 類將自身物件作為引數傳遞給 classa 類中的建構函式。

this關鍵字的第三個作用為:宣告索引器,詳情請見隨筆「索引器」。

this關鍵字的第四個作用為:可用作擴充套件方法的第乙個引數的修飾符,詳情請見隨筆「擴充套件方法

」。補充:在靜態類中,關鍵字 base 和 this 都是不允許的。

base關鍵字 this關鍵字

用於在派生類中實現對基類公有或者受保護成員的訪問,但是只侷限在建構函式 例項方法和例項屬性訪問器中。功能主要包括 1 呼叫基類上已被其他方法重寫的方法。2 指定建立派生類例項時應呼叫的基類建構函式。base常用於,在派生類物件初始化時和基類進行通訊。base可以訪問基類的公有成員和受保護成員,私有成...

new關鍵字 this關鍵字 base關鍵字

使用new,所做的三件事 1.類是引用物件,引用物件是在堆中開闢空間 在堆中開闢空間 2.在開闢的堆空間中建立物件 3.呼叫物件的構建函式 4.隱藏父類成員 子類的成員可以與隱藏從父類繼承的成員,類似於重寫。public new void sayhello this關鍵字的使用 1.代表當前類的物件...

base 關鍵字 類

通過base 關鍵字訪問基類的成員 呼叫基類上已被其他方法重寫的方法。指定建立派生類例項時應呼叫的基類建構函式。基類訪問只能在建構函式 例項方法或例項屬性訪問器中進行。從靜態方法中使用 base 關鍵字是錯誤的。例項 using system public class parent string p...