重写基类的实现,以便从继承的基类函数调用也调用覆盖函数



我必须重写基类中的函数,这样对继承函数的调用也会导致调用这个被覆盖的函数而不是基实现。

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;
}
}

最新更新