Определение наследования
Наследование — это механизм объектно-ориентированного программирования, позволяющий создавать новые классы на основе существующих классов. Новый класс называется производным, а исходный — базовым. Производный класс наследует свойства и методы базового класса.
Пример реализации наследования в языке C++
```cpp class Base { public: int x; };
class Derived : public Base { public: int y; }; ```
Полиморфизм
Полиморфизм — это способность объектов разных типов вести себя одинаково при одинаковом интерфейсе. Это достигается за счет использования виртуальных функций.
Виртуальные функции
Виртуальная функция объявляется с ключевым словом virtual в базовом классе и переопределяется в производном классе.
```cpp class Animal { public: virtual void makeSound() { std::cout << "Generic animal sound" << std::endl; } };
class Dog : public Animal { public: virtual void makeSound() override { std::cout << "Woof!" << std::endl; } }; ```
Правила наследования
При создании производного класса необходимо соблюдать следующие правила:
Производный класс должен явно указывать базовый класс через оператор
:после имени класса.Если базовый класс содержит конструкторы или деструкторы, они должны быть вызваны явно из конструктора или деструктора производного класса.
Конструкторы и деструкторы
Конструктор базового класса вызывается автоматически при создании объекта производного класса. Для вызова конструктора базового класса вручную используется конструкция base_class_name::base_class_name(...).
Деструктор производного класса вызывает деструктор базового класса автоматически.
Применение наследования и полиморфизма
Пример применения наследования и полиморфизма: ``cpp Animal* animals[2]; animals[0] = new Dog(); animals[1] = new Cat(); for (auto a : animals) { a->makeSound(); // Полиморфизм позволяет вызвать правильную функцию } ``
Пропуски для самопроверки
Заполни пропуски верно!