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

}

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


 

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

651. Применение аудио и видеотехнологий в правоохранительной деятельности 130 KB
  Обработка аудиоинформации. Аналого-цифровое преобразование. Технологии звукового синтеза. Форматы записи-воспроизведения аудиосигналов. Программные средства записи-воспроизведения звука.
652. Основы телекоммуникационных технологий и локальные сети в профессиональной деятельности 122.5 KB
  Назначение, компоненты и общая структура компьютерной сети. Современные коммуникационные технологии. Сети интегрального обслуживания. Проводные системы связи. Малогабаритные радиочастотные, инфракрасные и микроволновые системы. Национальные в международные компьютерные сети.
653. Теоретические основы конструирования, технологии и надежности РЭС 334.5 KB
  Принцип работы ЦАП. Импульсный источник питания. Выходной выпрямитель и стабилизатор. Определение основных параметров четырехполюсника. Расчет допусков на входное и выходное сопротивление и коэффициент передачи четырехполюсника.
654. Расчет погонной массы груза, тягового органа и движущих частей конвейера 136 KB
  Нормативные значения расчетных величин. Основные параметры рабочего органа. Расчет погонной массы груза, тягового органа и движущих частей конвейера. Расчет тягового органа на прочность. Основные размеры тягового органа. Кинематический расчет. Выбор элемента передач.
655. Философия жизни и феноменология 130.5 KB
  Иррационализм А. Шопенгауэра. Мир как воля и представление. Философия жизни Ф. Ницше. Понятие жизнь и воля к власти. Иррационализм Ницше в теории познания. Представление о сверхчеловеке. Критика Ницше христианства. Интуитивизм и творческая эволюция А. Бергсона. Феноменология Э. Гуссерля. Разработка Гуссерлем онтологической и гносеологической проблематики. Понятие жизненного мира.
656. Статистическая проверка непараметрических гипотез 78 KB
  Нулевой непараметрической гипотезой называется гипотеза относительно общего вида функции распределения. К первой группе относятся критерии согласия, с помощью которых проверяются нулевые гипотезы относительно общего вида функции распределения.
657. Исследование линейной цепи с обратной связью 39 KB
  Экспериментально исследовать влияние обратной связи на частотные характеристики линейной цепи, а также устойчивость линейной цепи с обратной связью.
658. Проектирование широкополосного усилительного устройства 643.5 KB
  Структурная схема усилителя. Выбор рабочей точки и расчет параметров транзистора. Расчет входного усилительного каскада. Методы исследования, расчета и проектирования широкополосных усилителей гармонических сигналов и импульсных сигналов
659. Товароведная характеристика и экспертиза качества питьевого молока вырабатываемого и реализуемого ГУСП ПЗ Тополя предприятия Московский Тюменского района 410.5 KB
  Состав и потребительские свойства молока. Упаковка, маркировка, хранение и транспортирование питьевого молока. Изучение ассортимента молочных продуктов, вырабатываемых ГУСП ПЗ Тополя. Результаты токсиколого-гигиенических исследований качества молока. Обеспеченность предприятия основными средствами производства и трудовыми ресурсами.