Sobes.tech
Junior — Middle

Magyarázza el, mi az a virtuális metódus, és miben különbözik egy szokásos módszertől az objektumorientált programozásban.

sobes.tech MI

Válasz az MI-től

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

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

Пример на 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.