Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Не підтверджено.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
3.08 Mб
Скачать
  1. Поняття про успадкування в класах

Мова програмування C++ підтримує механізм успадкування, який дає змогу в оголошенні класу вбудовувати інший клас. Для цього базовий клас задається під час оголошення похідного класу. Щоб зрозуміти сказане, почнемо з конкретного прикладу. Розглянемо клас dorZasib, який загалом визначає дорожній транспортний засіб. Його члени даних дають змогу зберігати наявну кількість коліс і можливу кількість пасажирів, яких може перевозити транспортний засіб:

// Оголошення класу, що визначає дорожній транспортний засіб class dorZasib {

Int kolesa; // Кількість коліс int pasagyr; // Кількість пасажирів public:

void setKolesa(int f) { kolesa = f;} int getKolesa() {return kolesa;}

void setPasagyr(int t) {pasagyr = t;} int getPasagyr() {return pasagyr;}

};

Таке загальне визначення дорожнього транспортного засобу є частиною виз­начення будь-якого конкретного типу автотранспорту. Наприклад, у наведеному нижче оголошенні класу шляхом успадкування класу dorZasib створюється клас va- nAuto - вантажних автомобілів: class vanAuto: public dorZasib {

Int mistkist; // Вантажомісткість у м куб. Public:

void setMistkist(int h) {mistkist = h;} int getMistkistO {return mistkist;}

void Show(char*s);

};

Той факт, що клас vanAuto успадковує клас dorZasib, означає, що клас vanAuto успадковує весь вміст класу dorZasib. До вмісту класу dorZasib клас vanAuto додає свого члена даних mistkist, а також функції-члени, необхідні для його підтримки.

Зверніть увагу на те, як успадковується клас dorZasib. Загальний формат для забезпечення механізму успадкування має такий вигляд: class ім'я_похідного_класу: доступ ім'я_базового_класу {

тіло нового класу

}

У такому оголошенні похідного класу елемент доступ є необов'язковим. У ра­зі потреби він може бути виражений одним із специфікаторів доступу: public, priva­te або protected. Ґрунтовніше про них буде сказано нижче у цьому розділі. А поки що у визначеннях усіх успадкованих класів будемо використовувати специфіка­тор доступу public. Це означає, що всі public-члени базового класу також будуть public-членами похідного класу. Отже, у наведеному вище прикладі члени класу vanAuto мають доступ до відкритих функцій-членів класу dorZasib, неначе вони (ці функції) були оголошені в тілі класу vanAuto. Проте клас vanAuto не має доступу до private-членів класу dorZasib. Наприклад, для класу vanAuto закритий доступ до чле­нів даних kolesa і pasagyr.

Розглянемо код програми, яка демонструє механізм успадкування двох під­класів класу dorZasib: vanAuto і lehAuto.

Код програми 5.1. Демонстрація механізму успадкування двох підкласів #include <vcl>

#include <iostream> // Для потокового введення-виведення

#include <conio> // Для консольного режиму роботи

using namespace std; // Використання стандартного простору імен

// Оголошення базового класу транспортних засобів class dorZasib {