Ключевое
Наследование интерфейса (interface inheritance) позволяет классу использовать контракт базового класса. Наследование реализации (implementation inheritance) позволяет классу использовать конкретную реализацию методов базового класса.
Наследование интерфейса:
- Определение: Подкласс наследует сигнатуры методов без их реализации.
- Цель: Обеспечить единообразие интерфейсов.
- Пример: Использование чисто виртуальных функций.
class Shape {
public:
    virtual void draw() = 0; // Чисто виртуальная функция
};
 
class Circle : public Shape {
public:
    void draw() override {
        // Реализация метода
    }
};Наследование реализации:
- Определение: Подкласс наследует как сигнатуры, так и реализацию методов.
- Цель: Повторное использование кода.
- Пример: Наследование методов с конкретной реализацией.
class Animal {
public:
    void eat() {
        // Реализация метода
    }
};
 
class Dog : public Animal {
    // Использует реализацию метода eat() из базового класса
};Совместное использование:
class Printable {
public:
    virtual void print() = 0;
};
 
class Document : public Printable {
public:
    void print() override {
        // Реализация метода print()
    }
 
    void save() {
        // Реализация метода save()
    }
};
 
class Report : public Document {
    // Наследует реализацию save() и print() из Document
};- Document реализует интерфейс Printable и предоставляет реализацию для метода print().
- Report наследует реализацию методов print() и save() от Document.