Ответ
Наследование — это механизм объектно-ориентированного программирования, позволяющий создавать новый класс (производный или дочерний) на основе существующего (базового или родительского). Производный класс наследует члены данных и методы базового класса, что способствует повторному использованию кода и построению иерархий.
Ключевые аспекты в C++:
- Отношение «является» (is-a):
DogявляетсяAnimal. Это основа для полиморфизма. - Типы наследования: определяют уровень доступа к унаследованным членам базового класса.
public: Открытые и защищённые члены базового класса остаются таковыми в производном.protected: Открытые и защищённые члены базового класса становятся защищёнными в производном.private: Открытые и защищённые члены базового класса становятся приватными в производном.
- Конструкторы и деструкторы: Конструкторы базового класса вызываются перед конструкторами производного. Деструкторы вызываются в обратном порядке.
Пример:
#include <iostream>
using namespace std;
// Базовый класс
class Animal {
public:
void eat() const {
cout << "Animal is eating." << endl;
}
protected:
int age; // Доступен в производных классах
};
// Производный класс с публичным наследованием
class Dog : public Animal {
public:
void bark() const {
cout << "Dog is barking!" << endl;
}
void setAge(int a) { age = a; } // Можем использовать защищённый член
};
int main() {
Dog myDog;
myDog.eat(); // Унаследованный метод
myDog.bark(); // Собственный метод
myDog.setAge(5);
// myDog.age = 5; // Ошибка: 'age' is protected within this context
return 0;
}
Наследование — фундамент для полиморфизма, когда указатель или ссылка на базовый класс могут использоваться для вызова переопределённых методов в производных классах.