Назад к вопросам
Junior — Middle
86
Можете объяснить отличие между ключевыми словами 'virtual' и 'override' в контексте ООП?
Компании, где спрашивали
Телкор
Ответ от нейросети
sobes.tech AI
В контексте ООП и языков C++/C# ключевое слово virtual используется для объявления метода в базовом классе, который может быть переопределён в производных классах. Это позволяет реализовать полиморфизм — вызов метода через указатель или ссылку на базовый класс будет динамически направлен на версию метода производного класса.
Ключевое слово override используется в производном классе для явного указания, что метод переопределяет виртуальный метод базового класса. Это помогает компилятору проверить, что метод действительно переопределяет существующий виртуальный метод, и избежать ошибок, например, из-за опечаток в имени или несовпадения сигнатуры.
Пример на C++:
class Base {
public:
virtual void foo() { // virtual - метод можно переопределить
std::cout << "Base foo" << std::endl;
}
};
class Derived : public Base {
public:
void foo() override { // override - явно переопределяем базовый виртуальный метод
std::cout << "Derived foo" << std::endl;
}
};
Таким образом:
virtualобъявляет метод виртуальным в базовом классе.overrideподтверждает, что метод в производном классе переопределяет виртуальный метод базового класса.