Sobes.tech
Назад к вопросам
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 подтверждает, что метод в производном классе переопределяет виртуальный метод базового класса.