Рівні доступу

клас PingPongEngine має рівень доступу public Це означає, що у будь-якого класу є доступ до нього Давайте проведемо простий експеримент – видалимо ключове слово public з оголошення класу PingPongEngine Тепер клас PingPongTable НЕ компілюватиметься, вказуючи на помилкиPingPongEngine cannot be resolved  to  a  type  (Неможливо визначити тип PingPongEngine) іThe type   enginePingPongEngine    is    not    visible(Тип даних enginePingPongEngine невидимий) Це означає, що клас PingPongTable не бачить більше клас PingPongEngine

Якщо рівень доступу не вказується явно, то мається на увазі рівень доступуpackage Це означає, що клас буде доступний тільки для класів, які знаходяться в одному з ним пакеті (директорії)

Точно також, якщо ви забудете дати доступ до методів класу PingPongEngine, клас PingPongTable так само вкаже вам на це, повідомивши, що ці методи для нього невидимі У наступному розділі в процесі створення гри в пінг – понг ви побачите, як використовуються рівні доступу

 

Рівень доступу private використовується для приховування методів або змінних класу від зовнішнього світу Уявіть собі автомобіль Велика частина людей поняття не мають, яка кількість деталей знаходиться у нього під капотом, а також про те, що реально відбувається, коли водій натискає на педаль гальма

Погляньте на наступний фрагмент коду У мові Java ми можемо сказати, що обєкт Car показує тільки один public метод –

brake (), усередині якого можуть бути викликані кілька інших методів, знати про які водієві немає ніякої необхідності

Наприклад, якщо водій надто сильно натискає на педаль гальма, компютер автомобіля може включити спеціальні антиблокувальні гальма Я вже згадував раніше, що програми на Java управляють такими складними роботами, як марсіанські всюдиходи, не кажучи вже про простих автомобілях

public class Car {

/ / Ця private змінна може використовуватися

/ / Тільки усередині класу

private String brakesCondition

/ / Public метод brake () викликає private методи,

/ / Щоб вирішити, які гальма використовувати

public void brake(int pedalPressure){ boolean useRegularBrakes useRegularBrakes=checkForAntiLockBrakes (pedalPressure) if (useRegularBrakes==true){

useRegularBrakes()

}else{

useAntiLockBrakes()

}

}

/ / Цей private метод, перевіряючий гальма з авто-блокуванням

/ / Може бути викликаний тільки всередині цього класу

private boolean checkForAntiLockBrakes(int pressure){

if (pressure &gt 100){

return true

}else {

return false

}

}

/ / Цей private метод може бути викликаний

/ / Тільки всередині цього класу

private void useRegularBrakes(){

/ / Тут буде код, який посилає сигнал звичайним гальмам

}

/ / Цей private метод може бути викликаний

/ / Тільки всередині цього класу

private void useAntiLockBrakes(){

/ / Код, який посилає сигнал антиблокувальна гальмах}

}

Є ще одне ключове слово в Java – protected – яке також встановлює рівень доступу Якщо ви використовуєте це ключове слово в сигнатурі методу, то цей метод буде доступний в класах – спадкоємців, а також в інших класах, які розташовані в цьому ж пакеті Однак він не буде доступний для класів, які знаходяться в інших пакетах

Одне з важливих властивостей обєктно – орієнтованих називається инкапсуляцией Це означає здатність ховати і захищати елементи класу від доступу з інших класів

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

У наступному розділі ви зможете знайти клас Score, який приховує свої властивості в змінних з доступом private

Джерело: Java Programming for Kids, Parents and Grandparents by Yakov Fain

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


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

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

Ваш отзыв

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

*

*