Перейти к содержанию

Наследование и полиморфизм

Программирование C++ Сложность 1/5

Начало урока

Наследование и полиморфизм

Строим семейства классов, повторно используем код и заставляем один вызов делать многое

Главная идея: Наследование позволяет новому классу повторно использовать код уже существующего класса, добавляя только то, что отличается. Полиморфизм позволяет работать со многими связанными объектами через один общий тип, при этом каждый объект ведёт себя по-своему. Вместе они помогают писать меньше кода, который делает больше.
К концу урока ты сможешь:
  • создать базовый и производный класс с помощью : public Base,
  • повторно использовать и расширять унаследованные члены, применять protected,
  • вызывать конструктор базового класса из производного,
  • использовать virtual-функции и override для полиморфизма,
  • объяснить, зачем базовому классу нужен virtual-деструктор.

1. Что такое наследование?

Наследование позволяет одному классу (производному) автоматически получить члены другого класса (базового). Затем производный класс может добавить что-то своё. Записываем это через двоеточие и public:

#include <iostream>
using namespace std;

class Animal {              // base class
public:
    void eat() {
        cout << "This animal eats food." << endl;
    }
};

class Dog : public Animal { // derived class
public:
    void bark() {
        cout << "Woof!" << endl;
    }
};

int main() {
    Dog d;
    d.eat();    // inherited from Animal
    d.bark();   // Dog's own method
    return 0;
}

Вывод:

This animal eats food.
Woof!

Dog не писал функцию eat(), но d.eat() работает, потому что Dog унаследовал её от Animal. Мы говорим «собака — это животное». Это отношение «является».

2. Представь семейство классов

У одного базового класса может быть много производных. Стрелка означает «наследует от» и всегда указывает от ребёнка вверх к родителю:

Animal базовый класс Dog производный Cat производный
Animal — базовый класс; Dog и Cat — производные классы, которые от него наследуют.

И Dog, и Cat получают всё публичное из Animal, поэтому общий код лежит в одном месте. Исправь ошибку в Animal один раз — и все производные классы тоже исправлены.

Продолжите этот урок на YourAIZone

В полном уроке — объяснение целиком, разобранные примеры, частые ошибки, тесты с мгновенной проверкой и ИИ-репетитор. Начните сразу как гость или создайте аккаунт, чтобы сохранять прогресс.

В полном уроке

  • Объяснение целиком
  • Разобранные примеры
  • Частые ошибки и как их избежать
  • Тестовые вопросы: 15
  • ИИ-репетитор, который отвечает на вопросы по теме
  • Отслеживание прогресса для ученика, родителей и учителя