【发布时间】:2018-06-10 09:31:55
【问题描述】:
我必须重写基类中的函数,这样调用继承的函数也会导致调用这个被重写的函数而不是基实现。
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?
【问题讨论】:
-
如果是c#而不是c++,则基类中的方法应标记为
virtual,派生类中的方法应标记为overrides -
如果你想重写一个方法,那么你必须实际重写它,这需要@ZoharPeled 提到的关键字。您发布的代码应该会生成一个警告,告诉您您的方法隐藏了一个继承的成员,这与覆盖不同。
标签: c# oop inheritance polymorphism