Мазмунга өтүү

Мурас алуу жана полиморфизм

Программалоо 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
  • Тема боюнча суроолорго жооп берген ЖИ-репетитор
  • Окуучу, ата-эне жана мугалим үчүн прогрессти көзөмөлдөө