Sobes.tech
Junior — Middle
76

Объясните, что такое виртуальный метод и в чем его отличие от обычного метода в объектно-ориентированном программировании?

Компании, где спрашивали
pangames

Ответ от нейросети

sobes.tech AI

Виртуальный метод в объектно-ориентированном программировании — это метод, который можно переопределить в производных классах для обеспечения полиморфизма. В отличие от обычного (не виртуального) метода, вызов виртуального метода определяется во время выполнения (динамический полиморфизм), а не во время компиляции.

Это позволяет использовать указатели или ссылки на базовый класс, но при вызове метода будет выполнена версия, соответствующая реальному типу объекта.

Пример на C#:

class Animal {
    public virtual void Speak() {
        Console.WriteLine("Animal speaks");
    }
}

class Dog : Animal {
    public override void Speak() {
        Console.WriteLine("Dog barks");
    }
}

Animal a = new Dog();
a.Speak(); // Выведет "Dog barks" благодаря виртуальному методу

Если бы метод Speak не был виртуальным, вызвался бы метод базового класса Animal, несмотря на то, что объект фактически типа Dog.