68952

Наслідування. Доступ до членів класу

Лекция

Информатика, кибернетика и программирование

Наслідування — один з наріжних каменів обєктно-орієнтованого програмування, оскільки воно дозволяє створювати ієрархічні класифікації Використовуючи Наслідування, можна створювати загальні класи, що визначають властивості, характерні для всієї сукупності споріднених класів.

Украинкский

2014-09-28

31.5 KB

0 чел.

Лекція № 14

Тема: Наслідування. Доступ до членів класу.

Наслідування — один з наріжних каменів об'єктно-орієнтованого програмування, оскільки воно дозволяє створювати ієрархічні класифікації Використовуючи Наслідування, можна створювати загальні класи, що визначають властивості, характерні для всієї сукупності споріднених класів. Ці класи можуть успадковувати властивості один у одного, додаючи до них свої власні унікальні характеристики.

Згідно стандартної термінології мови C++ клас, лежачий в основі ієрархії, називається базовим (base class), а клас, що успадковує властивості базового класу, — похідним (derived class). Похідні класи, у свою чергу, можуть бути базовими по відношенню до інших класів.

У мові C++ передбачений могутній і гнучкий механізм наслідування.

Управління доступом до членів базового класу

При наслідуванні члени базового класу стають членами похідного класу. Як правило, для наслідування використовується наступна синтаксична конструкція.

с1ass імя-похідного-класу: рівень_доступу імя-базового-класу

{

// тіло класу

}

Параметр рівень_доступу визначає статус членів базового класу в похідному класі. Як цей параметр використовуються специфікатори public, private або protected. Якщо рівень доступу не вказаний, то для похідного класу за умовчанням використовується специфікатор private, а для похідної структури - public. Розглянемо варіанти, що виникають в цих ситуаціях. (Специфікатор protected буде описаний в наступному розділі.)

Якщо рівень доступу до членів базового класу задається специфікатором publiс то всі відкриті і захищені члени базового класу стають відкритими і захищеними членами похідного класу. При цьому закриті члени базового класу не міняють свого статусу і залишаються недоступними членам похідного. Як демонструє наступна програма, об'єкти класу derived можуть безпосередньо посилатися на відкриті члени класу base.

#include <iostream>

using namespace std;

class base {

int i, j;

public:

void set(int а, int b) { i=a; j=b; }

void show() { cout « i << " " « j « "\n"; }

};

class derived : public base {

int k;

public:

derived(int x) { k=x; }

void showkO { cout « k « "\n"; }

};

int main() {

derived ob (3) ;

fcb.set(l, 2); // Звернення до члена класу base

ob.showO; // Звернення до члена класу base

job.showkO; // Звернення до члена класу derived

return 0 ;

}

Якщо властивості базового класу успадковуються за допомогою специфікатора доступу private, всі відкриті і захищені члени базового класу стають закритими ними похідного класу. Наприклад, наступна програма навіть не буде скомпільована, оскільки обидві функції set() і show() тепер є закритими членами класу derived.

Ця програма не буде скомпільована.

#include <iostream>

using namespace std;

class base {

int i, j ;

public:

void set (int а, int b) { i=a; j=b; }

void show() { cout « i « " " « j « "\n";}

};

 

Відкриті члени класу base є закритими членами класу derived.

class derived : private base {

int k;

public:

derived(int x) { k=x; }

};

void main() {

derived ob (3) ;

ob.set (1, pb.show());

// Помилка, доступ до функції set() заборонений.

ob.show();

// Помилка, доступ до функції show() заборонений.

}

При закритому наслідуванні всі відкриті і захищені члени базового класу стають закритими членами похідного класу. Це означає, що вони залишаються доступними членам похідного класу, але недоступні решті елементів програми, що не є членами базового або похідного класів.


 

А также другие работы, которые могут Вас заинтересовать

7712. Педагогічна культура та майстерність викладача вищої школи 61.5 KB
  Педагогічна культура та майстерність викладача вищої школи План Педагогічна діяльність викладача ВНЗ. Сучасні вимоги до викладача ВНЗ. Педагогічна майстерність викладача ВНЗ. 1. Педагогічна діяльність викладача ВНЗ. Педагогічна пра...
7713. Виховна робота у вищій школі 83 KB
  Виховна робота у вищій школі План Зміст і особливості виховання молоді в сучасних умовах. Методи виховання у ВНЗ. Форми виховання у АНЗ. Функції і завдання куратора академічної групи. 1. Зміст і особливості виховання молоді в...
7714. Науково-дослідна робота у вищій школі 91 KB
  Науково-дослідна робота у вищій школі План Логіка і методика наукового дослідження. Методи науково-педагогічного дослідження. Основні види наукових досліджень у вищій щколі. Система наукової роботи університету. 1. Логіка і м...
7715. Наука о живой материи 26 KB
  Наука о живой материи. Весь окружающий мир гармоничен и делится на системы живой и неживой природы. До этого мы изучали неживую природу, а сейчас будем говорить о о биологии (с греч. биос перев. жизнь, т.е. учение о жизни). Биология - наука, из...
7716. Взаимосвязь космоса и живой природы 54.5 KB
  Взаимосвязь космоса и живой природы Говоря о взаимодействии человека и природы, мы оперировали масштабом лишь одной планеты - Земли. Однако разнообразное взаимодействие между космосом, с одной стороны, и живой природой и человеком - с друг...
7717. Модели происхождения Вселенной 77.5 KB
  Модели происхождения Вселенной. 1. Ученик А.А. Фридмана Георг Гамов (эмигрировал в 1934г. из СССР в США) в 1948 г. разработал модель горячей Вселенной под названием Космология Большого взрыва» Радиус Вселенной в первоначальном состоянии был р...
7718. Схема анализа плана воспитательной работы классного руководителя 26 KB
  Схема анализа плана воспитательной работы классного руководителя наличие общей характеристики класса, детального анализа уровня его воспитанности, выделение положительных сторон и недостатков в поведении и деятельности учащихся ха...
7720. Теоретичні основи безпеки життєдіяльності 108.25 KB
  Теоретичні основи безпеки життєдіяльності Програмна анотація Предмет безпеки життєдіяльності. Теоретичні основи безпеки життєдіяльності. Науки, на яких базується безпека життєдіяльності. Теорія небезпеки та ризику. ОСНОВНІ ПОНЯТТЯ Безпек...