簡體   English   中英

重寫基類的實現,以便從繼承的基類函數進行的調用也將調用overidden函數

[英]Override the implementation of a base class such that calls from inherited base class functions also call the overidden function

我必須以這樣的方式覆蓋基類中的函數,即對繼承的函數的調用也會導致對該覆蓋函數的調用,而不是對基礎實現的調用。

class base_class
{
    string abc;
    public int get_1()
    {
        return 1;
    }
    public  int get_number()
    {
        return get_1()+1;
    }
}

class der_class : base_class
{
    public int get_1()
    {
        return 2;
    }
}
class Program
{
    static void Main(string[] args)
    {
        der_class abc = new der_class();
        Console.WriteLine(abc.get_number());
        Console.ReadKey();
    }
}

打印輸出2。如何通過使get_number調用覆蓋的get_1來使輸出為3?

您需要override關鍵字才能實際覆蓋方法,否則將其隱藏。

class der_class : base_class
{
    // note the word override here!
    public override int get_1()
    {
        return 2;
    }
}

另外,您需要在基類中使該方法virtual

class base_class
{
    string abc;
    // note the word virtual here!
    public virtual int get_1()
    {
        return 1;
    }
    public  int get_number()
    {
        return get_1()+1;
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM