... > C++ > Наследование и полиморфизм...

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

НАВИГАЦИЯ ПО СТРАНИЦЕ

Наследование в C++ Полиморфизм в C++

Наследование в C++

Наследование является ключевым аспектом объектно-ориентированного программирования, позволяя создавать новый класс на основе существующего, повторно используя его свойства и методы. Рассмотрим простой пример наследования:

// Базовый класс
class Animal {
public:
    void eat() {
        cout << "Animal is eating." << endl;
    }
};

// Производный класс
class Dog : public Animal {
public:
    void bark() {
        cout << "Dog is barking." << endl;
    }
};

В этом примере класс Dog наследует от класса Animal. Теперь объект класса Dog может использовать как методы класса Dog, так и методы класса Animal.

Dog myDog;
myDog.eat();  // Метод из базового класса
myDog.bark(); // Метод из производного класса

Полиморфизм в C++

Полиморфизм позволяет использовать объекты производных классов так, как если бы они были объектами базового класса. В C++ полиморфизм реализуется с использованием виртуальных функций.

// Базовый класс с виртуальной функцией
class Shape {
public:
    virtual void draw() {
        cout << "Drawing a shape." << endl;
    }
};

// Производный класс с переопределением виртуальной функции
class Circle : public Shape {
public:
    void draw() override {
        cout << "Drawing a circle." << endl;
    }
};

Теперь можно создать массив объектов базового класса и вызывать их методы, не зная конкретного типа объекта:

Shape* shapes[2];
shapes[0] = new Shape();
shapes[1] = new Circle();

for (int i = 0; i < 2; ++i) {
    shapes[i]->draw(); // Вызывает соответствующую функцию в зависимости от типа объекта
}

Этот код вызовет метод draw() в зависимости от фактического типа объекта в массиве. Это демонстрирует полиморфизм в действии.

Наследование и полиморфизм вместе обеспечивают гибкость и повторное использование кода, что является одним из ключевых преимуществ объектно-ориентированного программирования.