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() заборонений.

}

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


 

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

70094. ПОЛІТИЧНА КАРТА ЄВРОПИ 103 KB
  Згрупувати країни Європи за різними ознаками. У кожному групуванні обчислити кількість країн у відповідних групах та частку групи в загальній кількості країн Європи. Групування можна оформити у вигляді окремих таблиць чи зведеної таблиці, зразок якої поданий нижче...
70095. ОЦЕНКА ОПАСНОСТИ ПОРАЖЕНИЯ ТОКОМ В ТРЕХФАЗНЫХ ЭЛЕКТРИЧЕСКИХ СЕТЯХ НАПРЯЖЕНИЕМ ДО 1000 В 111.5 KB
  Изучить влияние параметров сети режима нейтрали сопротивления изоляции и емкости фазных проводов относительно земли на опасность поражения человека электрическим током. Сравнить опасность прикосновения человека к проводам трехфазных сетей с изолированной и заземленной нейтралями...
70096. Операционные системы. Полезные команды Unix 89.5 KB
  Файлы, имена которых записаны в файле f7, скопировать в каталог dir4, при этом сообщить об ошибках текстом на экране, а так же направить это сообщение об ошибках в файл myerr. Просмотреть его содержимое.
70097. ХАРАКТЕРИСТИКА РЕМЕСЕЛ ПО ТЕКСТИЛЮ (ТКАНИНИ, КИЛИМИ, ВИШИВКА) 70 KB
  Матеріали інструменти та пристрої: таблиці малюнки натуральні зразки асортименту тканин килимів вишитих виробів різних типологічних груп. Текстильні матеріали це матеріали які складаються з текстильних волокон та ниток.
70098. Начало работы в 1С: «Бухгалтерия» 425 KB
  В данное окно вносятся сведения о нашей организации которые можно просмотреть в списке Константы. Так же данные сведения можно заносить непосредственно в Константы для этого вызовите из Главного меню Операции.
70100. Режимы наборов данных 332.5 KB
  Наборы данных могут находиться в различных режимах. Текущий режим набора данных определяется свойством State типа TDataSetState. Оно доступно для чтения во время выполнения приложения и может быть использовано только для текущего режима.
70101. Электронная таблица Excel. Использование встроенных функций 250.5 KB
  Использование встроенных функций. Значения которые используются для вычисления функций называются аргументами. В качестве аргументов функций можно использовать константы ссылки на ячейки имена диапазонов ячеек а также другие функции. EXCEL содержит более 400 встроенных функций.