class MyBaseClass
{
virtual public void Print()
{
Console.WriteLine("This is the base class.");
}
}
class MyDerivedClass : MyBaseClass
{
override public void Print()
{
Console.WriteLine("This is the derived class.");
}
}
class Program
{
static void Main()
{
MyDerivedClass derived = new MyDerivedClass();
MyBaseClass mybc = (MyBaseClass)derived;
derived.Print();
mybc.Print();
}
}
ВЫВОД:производный класс не вызывает метод базового класса
This is the derived class.
This is the derived class.
Я не понимаю, почему второй печатает вызов, полученные методом класса для печати(), потому что я бросил mybc объект базового класса. Я ожидаю, что вместо этого он напечатает метод печати базового класса. Я что-то упустил?
Заканчивать подобный задаваемый вопрос на этом сайте для вдумчивого обсуждения: http://stackoverflow.com/questions/1334254/how-can-i-call-the-base-implementation-of-an- overridden-virtual-method –
удалить ключевое слово override, и все будет нормально работать –
@PranavPatel Это будет работать в техническом смысле, но в целом это будет плохой дизайн. –