Модифікатори доступу public, protected і private в java, програмування на java, android

Java забезпечує контроль доступу через три модифікатора - public, protected and private. Ми не зобов'язані використовувати ці модифікатори доступу завжди, тому у нас є ще модифікатор доступу за замовчуванням, а саме default access, package-private або no modifier.

Ми можемо використовувати модифікатори доступу з класами, а також змінними класу і методами.

Модифікатори доступу Java Class

Розробники мови дозволили використовувати тільки «public» або «default» для роботи з Java класами.

  • Якщо клас «public», то ми можемо отримати до нього доступ з будь-якої точки світу, тобто від будь-якого іншого класу, розташованого в будь-яких інших пакетах і т.д.
  • Ми можемо мати тільки один «public» клас у вихідному файлі. Також слід вказати, що ім'я файлу повинна бути таким же, як ім'я public-класу.
  • Якщо клас має «default access» (доступ за замовчуванням), то він може бути доступний тільки з інших класів в одному пакеті.

Наведені вище правила застосовуються і до внутрішніх класів.

Модифікатори доступу в Java класі

Ми можемо мати всі чотири модифікатора доступу для змінних-членів класу і методів. Однак правила доступу для членів класу будуть застосовні тільки після правил доступу на рівні класу. Наприклад, якщо клас, який має доступ за замовчуванням (default access), то він не буде видно в інших пакетах і, отже, методи і змінні класу також будуть не видно.

Ми будемо вивчати кожен випадок окремо, а потім покажемо доступи в простій програмі.

модифікатор public

Якщо член класу «public», то він може бути використаний в будь-якому місці. Мінлива чи метод має доступ в глобальному масштабі. Це простий спосіб забезпечити доступ до членів класу, однак ми повинні дбати у використанні цього ключового слова / модифікатора зі змінними класу, в іншому випадку хтось може змінити значення. Зазвичай змінні класу private. а доступ до цих змінним здійснюється через getter-setterметоди.

модифікатор private

Якщо член класу «private», то він буде доступний тільки всередині того ж класу. Це найбільш обмежений доступ, тому член класу не буде видно для зовнішнього світу. Зазвичай змінні класу і методи, призначені для використання тільки всередині класу, роблять private.

модифікатор protected

Якщо член класу «protected», то він буде доступний тільки для класів в одному пакеті і в підкласах. Цей модифікатор менш обмежений, ніж private, але більш обмежений, ніж public. Зазвичай ми використовуємо це ключове слово / модифікатор, щоб переконатися, що змінні класу доступні тільки для підкласів.

модифікатор default

Якщо в члені класу не вказано будь-якої модифікатор доступу, то він має доступ за замовчуванням (default). Правила доступу подібні класам і членам класу з доступом за замовчуванням. В цьому випадку доступ буде тільки для класів в одному пакеті. Цей доступ є більш обмеженим, ніж public і protected, але менш обмежений, ніж private.

Ланцюжок доступності: від менш доступних до більш доступним

Давайте напишемо кілька простих класів, де ми побачимо модифікатори доступу в дії.