[英]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.