也许一个愚蠢的问题,但假设base class A
定义virtual method V
,是有过一种情况,这将是有意义的derived class C
由具有相同签名,宣布了新的virtual method C.V
为A.V
隐藏A.V
:派生类应该隐藏...吗?
class Program
{
static void Main(string[] args)
{
A a = new C();
a.Print(); // prints "this is in B class"
C c = new C();
c.Print();// prints "this is in C class"
}
}
class A
{
public virtual void Print()
{
Console.WriteLine("this is in A class");
}
}
class B:A
{
public override void Print()
{
Console.WriteLine("this is in B class");
}
}
class C : B
{
public virtual void Print()
{
Console.WriteLine("this is in C class");
}
}
谢谢你
嗨,正如问题已经显示,这个例子是关于虚拟函数(这是多态性的基础),其中的问题似乎是关于隐藏非虚拟基类成员。这是什么? – 2010-07-13 18:52:35
jdv:在隐藏非虚拟基础成员的这个问题上,我没有看到任何东西。 – dthorpe 2010-07-13 20:06:43