位置:首頁(yè) > 軟件操作教程 > 編程開發(fā) > C# > 問題詳情

C# 調(diào)用重寫或隱藏的基類方法

提問人:劉團(tuán)圓發(fā)布時(shí)間:2020-12-07

無(wú)論是重寫成員還是隱藏成員,都可以在派生類的內(nèi)部訪問基類成員。這在許多情況下都是很有用的,例如: 

    ?要對(duì)派生類的用戶隱藏繼承的公共成員,但仍能在類中訪問其功能。

    ?要給繼承的虛擬成員添加實(shí)現(xiàn)代碼,而不是簡(jiǎn)單地用重寫的新實(shí)現(xiàn)代碼替換它。

為此,可使用base關(guān)鍵字,它表示包含在派生類中的基類的實(shí)現(xiàn)代碼(在控制構(gòu)造函數(shù)時(shí),其用法是類似的),例如:

public class MyBaseClass 

{

    public virtual void DoSomething()

    {

        // Base implementation.

    }

}

public class MyDerivedClass : MyBaseClass 

{

    public override void DoSomething()

    {

        //Derived class implementation, extends base class implementation.

        base.DoSomething();

        // More derived class implementation.

    }

}

這段代碼在MyDerivedClass包含的DoSomething()方法中,執(zhí)行包含在MyBaseClass中的DoSomething()版本,MyBaseClass是MyDerivedClass的基類。因?yàn)閎ase使用的是對(duì)象實(shí)例,所以在靜態(tài)成員中使用它會(huì)產(chǎn)生錯(cuò)誤。


this關(guān)鍵字

    與base—樣,this也可以用在類成員的內(nèi)部,且該關(guān)鍵字也引用對(duì)象實(shí)例。只是this引用的是當(dāng)前的對(duì)象實(shí)例(即不能在靜態(tài)成員中使用this關(guān)鍵字,因?yàn)殪o態(tài)成員不是對(duì)象實(shí)例的一部分)。

    this關(guān)鍵字最常用的功能是把當(dāng)前對(duì)象實(shí)例的引用傳遞給一個(gè)方法,如下例所示:

public void doSomething()

{

    MyTargetClass myObj = new MyTargetClass(); 

    myObj.DoSomethingWith(this);

}

    其中,被實(shí)例化的MyTargetClass實(shí)例(myObj)有一個(gè)DoSomethingWithO方法,該方法帶有一個(gè)參數(shù),其類型與包含上述方法的類兼容。這個(gè)參數(shù)類型可以是類的類型、由這個(gè)類繼承的類類型,或者由這個(gè)類或 System.Object實(shí)現(xiàn)的一個(gè)接口。

    this關(guān)鍵字的另一個(gè)常見用法是限定局部類型的成員,例如:

public class MyClass 

{

    private int someData;

    public int SomeData => this.someData;

許多開發(fā)人員都喜歡這個(gè)語(yǔ)法,它可以用于任意成員類型,因?yàn)榭梢砸谎劭闯鲆玫氖浅蓡T,而不是局部變量。

繼續(xù)查找其他問題的答案?

相關(guān)視頻回答
回復(fù)(0)
返回頂部