Я понимаю, что когда вы говорите "виртуальный метод вызывается", вы подразумеваете переопределение метода.
Ответ - нет.Каждый раз, когда вызывается любая версия виртуального метода, он не вызывает автоматически методы своего базового класса.Но иногда вы хотите вызывать их, поэтому вы включаете явный вызов метода базового класса.Примерно так:
class Base
{
public virtual void VirtualMethod()
{
// Insert code here
}
}
class Derived : Base
{
public override void VirtualMethod()
{
// Insert code here
base.VirtualMethod(); // Explicit call to the base class method
}
}
Если бы мы не включили инструкцию base.VirtualMethod();
, метод базового класса не был бы вызван при вызове метода производного класса.