Істинне значення protected

Раніше ми коротко згадали про те, що оголошення члена класу захищеним (тобто з ключовим словом protected) означає можливість звернення до нього з класів, що розширюють даний, – однак цьому зауваженню не вистачає формальної чіткості Висловлюючись більш точно, до захищеного члену класу можна звертатися через посилання на обєкт, що відноситься щонайменше до того ж типу, що й клас Приклад допоможе нам розібратися з цим твердженням Припустимо, є наступна ієрархія класів:

Поле calories в класі Dessert є захищеним Кожен клас, який розширює Dessert, успадковує від нього поле calories Проте код класу Cake може здійснювати доступ до поля calories тільки через посилання на тип, є Cake або його підкласом (наприклад, тип Chocolate Cake) Код класу Cake не може звертатися до поля calories через посилання типу Scone Таке обмеження дозволяє бути впевненим в

тому, що доступ до protected-полям здійснюється лише в межах ієрархії класу Якщо

в коді класу Cake є посилання на більш загальний обєкт Dessert, ви не можете застосовувати її для доступу до поля calories, однак ви можете перетворити її на заслання на Cake і скористатися результатом – За умови, звичайно, що обєкт, на який вона вказує, дійсно відноситься до класу Cake (щонайменше)

Сказане справедливо і по відношенню до захищених методам – ​​їх можна викликати тільки через посилання на тип, що відноситься щонайменше до того ж класу

До захищених статичним полів і методів можна звертатися з будь-якого розширеного класу Якби поле calories було статичним, то будь-який метод (як статичний, так і ні) в Cake, ChocolateCake і Scone міг би звертатися до нього через посилання на будь-який з типів Dessert

Члени класу, оголошені з ключовим словом protected, також виявляються

доступними для будь коду, що входить до той же пакет Якщо зображені вище класи сімейства Dessert входять в один пакет, то вони можуть звертатися до полів calories один одного

Джерело: Арнольд К, Гослінг Д – Мова програмування Java (1997)

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*