Виртуальные классы — это полезный способ определить код «по умолчанию» с использованием наследования, но при этом учитывать различия, характерные для классов. Как абстрактные классы, но менее принудительно.

Виртуальные классы, такие как Абстрактные классы, могут выступать в качестве базовых классов и позволять множеству других классов наследовать от них, получая свои (общедоступные em> и защищенные) переменные и методы, как если бы производные классы содержали их в себе.

Хотя вышеприведенный класс «Автомобиль» намного проще, чем класс «Автомобиль» с точки зрения объема кода, оба могут делать одни и те же вещи.

"Автомобиль" может вызывать "Вперед", "Назад», «Повернуть налево» и «Повернуть направо» и все, кроме «Forward» будет работать так, как указано в классе «Vehicle». Метод «Вперед» был переопределен методом «Автомобиль», поэтому он будет запускать код внутри «Car» вместо этого при вызове.

Как показано выше, ключевое слово «override» используется в наследующем классе, чтобы указать, что метод Virtual из базового класса должен быть переопределен и не использовать его реализацию по умолчанию.

Ключевое слово «override» идет после модификатора доступа и перед типом возвращаемого значения и может использоваться на любой метод, наследуемый от метода Virtual базового класса.

Если вы не хотите полностью переопределять метод, а просто хотите добавить к его реализации, вы можете сделать это:

Вызывая «base.YourMethodName()», вы можете запустить как код по умолчанию из базового класса, так и любой дополнительный код в вышеуказанной функции (до или после базовый вызов).