隐藏成员函数不起作用
本文关键字:不起作用 函数 成员 隐藏 | 更新日期: 2023-09-27 18:14:43
我想我错过了怀孕。我试图通过替换公共函数来覆盖子类中类的行为。在下面的程序中,我期望将"B"写入控制台,但程序打印的是"A"。我想错了什么?我怎样才能实现它。(在我的实际情况中,我不能更改A类)。
class Program
{
class A { public void F() { Console.WriteLine("A"); } }
class B : A { public new void F() { Console.WriteLine("B"); } }
static void Main(string[] args)
{
A x;
x = new B();
x.F();
Console.ReadLine();
}
}
可以通过使用virtual
方法并在下面重写它来获得所需的行为;注意override
关键字
class Program
{
class A { public virtual void F() { Console.WriteLine("A"); } }
class B : A { public override void F() { Console.WriteLine("B"); } }
static void Main(string[] args)
{
A x;
x = new B();
x.F();
Console.ReadLine();
}
}
如果你碰巧有Java背景,请注意这种类型的继承是Java的默认行为,但在c#中必须显式声明。