我必须以这样的方式覆盖基类中的函数,即对继承的函数的调用也会导致对该覆盖函数的调用,而不是对基础实现的调用。
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;
}
}
关于c# - 重写基类的实现,以便从继承的基类函数进行的调用也将调用overidden函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50782313/