русс | укр

Мови програмуванняВідео уроки php mysqlПаскальСіАсемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование


Linux Unix Алгоритмічні мови Архітектура мікроконтролерів Введення в розробку розподілених інформаційних систем Дискретна математика Інформаційне обслуговування користувачів Інформація та моделювання в управлінні виробництвом Комп'ютерна графіка Лекції


Специфікатор доступу protected


Дата додавання: 2014-04-22; переглядів: 1676.


Ми навчилися розширювати можливості класу, майже не модифікуючи його код. Розглянемо, що ж ми все-таки поміняли в класі Counter.

Дані класу, з яким ми раніше познайомилися, мали специфікатор доступу private. В програмі 11.1 ми використовуємо інший специфікатор доступу – protected. Розглянемо його призначення.

Згадаємо, що нам відомо про специфікатори доступу private і public. У методів класу є доступ до членів (полів і методів) класу, якщо вони мають будь-який з цих специфікаторів. Але при використанні об’єкту, оголошеного в програмі, можна дістати доступ тільки до даних зі специфікатором public. Однак при використанні успадковування в нас з’являється ряд додаткових можливостей. Виникає питання, чи можуть методи похідного класу мати доступ до членів базового класу? Це можливо тоді, коли ці члени мають специфікатор доступу public або protected. До членів, оголошених як private, доступу нема.

Член, оголошений як protected, доступний методам свого класу і методам будь-якого похідного класу. При цьому він не буде доступним з функцій, які не належать до цих класів, наприклад, з функції main().

Далі приведена таблиця, яка відображає можливості використання специфікаторів доступу в різних ситуаціях.

Специфікатор доступу Доступ з самого класу Доступ з похідних класів Доступ із зовнішніх класів та функцій
public + + +
protected + + -
private + - -

 

Таким чином, якщо ми пишемо клас, який пізніше буде використовуватися як базовий при успадковуванні, то дані, до яких треба мати доступ, слід оголошувати як protected.

 

Недоліки використання специфікатора protected

Використання специфікатора protected має недоліки. Припустімо, ми написали бібліотеку класів і публічно її поширюємо. Будь-який програміст може дістати доступ до членів класу, оголошених як protected, просто створюючи похідні класи. Це робить члени, оголошені як protected, значно менш захищеними, ніж оголошені як private. Щоб уникнути спотворення даних, часто доводиться дозволяти доступ похідним класам тільки до тих методів базового класу, що оголошені як public. Однак використання специфікатора доступу protected спрощує програмування.

 


<== попередня лекція | наступна лекція ==>
Доступ до базового класу | Незмінність базового класу


Онлайн система числення Калькулятор онлайн звичайний Науковий калькулятор онлайн