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

}

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


 

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

42698. Основные приемы программирования. Разветвления 78.5 KB
  h подключение библиотеки switch это оператор для выбора одного из многих продолжений cout счет вывод cse N выбор условия flot тип данных printf вывод scnf считывание defult: brek завершение условия switch= count= brek if else условие Текст программы решения задачи на языке высокого уровня С include stdfx.h int min { setlocleLC_LL RUS ;int lm = 0; для меню cout Выберите желаемое действие: endl; cout 1: Решить задачу: endl; cout 2: Выйти из приложения без решения задачи endl; cout Введите желаемое действие: ;...
42700. Алгоритмизация циклических вычислительных процессов 101 KB
  Спецификации всех разработанных процедур и/или функций. Данная программа считает заданную по условию задачи формулу, находит сумму чисел, а также наибольшее число и выводит все это на экран. Программа реализованна в связи с условиями задачи т.е создает массив нужный пользователю далее с помощью 3 разных циклов for, while (постусловием), while (предусловвием) выполняет условия задачи.
42701. Создание игры Spider 2 154 KB
  Успех вашего проекта во многом будет зависеть от выбранной вами платформой под которую будет вестись разработка, жанра игры и аудитории на которую рассчитана эта игра. Проект, процесс разработки которого, я бы хотел описать в этой курсовой работе я начал разрабатывать, потому что мне это нравится и я хотел получить опыт разработки под платформу Android
42702. Криптографические алгоритмы. Процесс формирования цифровой подписи 2.64 MB
  Криптографическая система PGP . Ознакомиться с программой PGP. Работа с программой PGP В консоли: Сгенерировать вашу собственную уникальную пару секретный открытый ключи. Проверка подлинности подписи В случае успешной верификации будет выведенно сообщение: Работа с криптографическими средствами программы PGP Pretty Good Privcy PGP выпущено фирмой Phil's Pretty Good Softwre и является криптографической системой с высокой степенью секретности.
42703. ИССЛЕДОВАНИЕ ПОЛУПРОВОДНИКОВЫХ ДИОДОВ 275.5 KB
  Диффузия основных носителей заряда через границу раздела р и nобластей создает ток диффузии в рnпереходе равный сумме электронного и дырочного токов: Уход основных носителей заряда из слоев вблизи границы в соседнюю область оставляет в этих слоях нескомпенсированный неподвижный объемный заряд ионизированных атомов примеси: уход электронов положительный заряд ионов доноров в nобласти а уход дырок отрицательный заряд ионов акцепторов в робласти рис. В результате появления потенциального барьера диффузионный ток уменьшается. Движение...
42704. Программирование вложенных циклов и матричных задач 174 KB
  В самом начале для удобстава пользователю предоставляется менюшка с выбором действий. 1-ручное заполнение матрицы, 2 – рандомное и выход из программы. Эта реализация выполняется спомощь оператора switch (+ разумеется выбор действий case 1, case 2, case 3). После того как матрица будет заполнена программа по условию задачи с помощью цикла for переберает каждый эл. матрицы по диагонале и ищет отрицательный эл. если не находит то выводит сообщение “Отрицательные числа в диагонале отсудствуют”.
42705. Инструкции по движению поездов и маневровая работа, конспект лекций 218.5 KB
  Правила приема, отправления и пропуска поездов при различных устройствах сигнализации, централизации и блокировки на железнодорожных станциях и средствах сигнализации и связи при движении поездов, как в нормальных условиях, так и в случаях их неисправности...
42706. Міжнародна система інтелектуальної власності 59.5 KB
  Основою міжнародної системи інтелектуальної власності на сьогодні є 22 угоди, 14 з яких регулюють правовідносини у сфері промислової власності, а вісім відносяться до авторського права і суміжних прав. Україна приєдналася до більшості