Page cover

Наследование ООП

Пример наследования
class abiturient
{

public:
    string name;

};


class student : public abiturient // класс студента наследует атрибут имени
{                                // от класса абитуриента

public:
    string group;

};

Унаследование методов
class student
{

public:
    
    void Learn()
    {
        cout << "я учусь!" << endl;
    }

};

class professor : public student
{
    
public:

    void Learn()
    {
        cout << "я преподаю" << endl; // унаследованный метод переопределяется
    }
    
};

Класс professor унаследовал метод Learn() от класса student и переопределил его.

student s;
s.Learn();  // Выведет: "я учусь!"

professor p; 
p.Learn();  // Выведет: "я преподаю"

Один и тот же метод ведет себя по разному в разных классах. Это пример полиморфизма.

Еще пример наследования методов и переопределения
class Animal {
    void Speak() { cout << "Звук животного" << endl; }
};

class Dog : public Animal {
    void Speak() { cout << "Гав-гав!" << endl; }
};

class Cat : public Animal {
    void Speak() { cout << "Мяу!" << endl; }
};

Dog dog;
Cat cat;

dog.Speak();  // "Гав-гав!"
cat.Speak();  // "Мяу!"

Last updated