Junior — Middle
75
Объясните, что такое виртуальный метод и в чем его отличие от обычного метода в объектно-ориентированном программировании?
Компании, где спрашивали
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.