Возможно, глупый вопрос, но при условии, что base class A
определяет a virtual method V
, существует ли когда-либо ситуация, когда было бы целесообразно скрыть derived class C
A.V
, объявив новый virtual method C.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");
}
}
Спасибо