У цьому підручнику ми дізнаємося про модифікатор доступу Java, його типи та як їх використовувати за допомогою прикладів.
Що таке модифікатори доступу?
У Java модифікатори доступу використовуються для встановлення доступності (видимості) класів, інтерфейсів, змінних, методів, конструкторів, членів даних та методів сеттера. Наприклад,
class Animal ( public void method1() (… ) private void method2() (… ) )
У наведеному вище прикладі ми оголосили 2 методи: method1 () і method2 (). Ось,
- метод1 є
public
- Це означає, що до нього можуть отримати доступ інші класи. - метод2 є
private
- Це означає, що інші класи не можуть отримати до нього доступ.
Зверніть увагу на ключове слово public
та private
. Це модифікатори доступу в Java. Вони також відомі як модифікатори видимості.
Примітка : Ви не можете встановити модифікатор доступу методів отримання.
Типи модифікатора доступу
Перш ніж дізнатися про типи модифікаторів доступу, переконайтеся, що знаєте про пакети Java.
У Java є чотири ключові слова модифікаторів доступу, і це:
Модифікатор | Опис |
За замовчуванням | декларації видно лише в пакеті (приватний пакет) |
Приватна | оголошення видно лише в класі |
Захищений | декларації видно в пакунку або всіх підкласах |
Громадський | декларації видно скрізь |
Модифікатор доступу за замовчуванням
Якщо ми явно не вказуємо будь-який модифікатор доступу для класів, методів, змінних тощо, тоді за замовчуванням розглядається модифікатор доступу за замовчуванням. Наприклад,
package defaultPackage; class Logger ( void message()( System.out.println("This is a message"); ) )
Тут клас Logger має модифікатор доступу за замовчуванням. І клас видно всім класам, що належать до пакета defaultPackage. Однак, якщо ми спробуємо використати клас Logger в іншому класі за межами defaultPackage, ми отримаємо помилку компіляції.
Модифікатор приватного доступу
Коли оголошені змінні та методи private
, вони не можуть отримати доступ за межами класу. Наприклад,
class Data ( // private variable private String name; ) public class Main ( public static void main(String() main)( // create an object of Data Data d = new Data(); // access private variable and field from another class d.name = "Programiz"; ) )
У наведеному вище прикладі ми оголосили приватну змінну з назвою name та приватний метод з назвою display()
. Запустивши програму, ми отримаємо таку помилку:
Main.java:18: error: name has private access in Data d.name = "Programiz"; ^
Помилка генерується, оскільки ми намагаємось отримати доступ до приватної змінної та методу private класу Data з класу Main.
Можливо, вам цікаво, що, якщо нам потрібен доступ до цих приватних змінних. У цьому випадку ми можемо використовувати метод геттерів та сеттерів. Наприклад,
class Data ( private String name; // getter method public String getName() ( return this.name; ) // setter method public void setName(String name) ( this.name= name; ) ) public class Main ( public static void main(String() main)( Data d = new Data(); // access the private variable using the getter and setter d.setName("Programiz"); System.out.println(d.getName()); ) )
Вихід :
Назва - Programiz
У наведеному вище прикладі ми маємо приватну змінну з іменем. Для доступу до змінної із зовнішнього класу ми використовували методи: getName()
and setName()
. Ці методи в Java називаються getter і setter.
Тут ми використовували метод setter ( setName()
) для присвоєння значення змінній та метод getter ( getName()
) для доступу до змінної.
Ми використовували this
ключове слово всередині setName () для посилання на змінну класу. Щоб дізнатися більше про це ключове слово, відвідайте Java це ключове слово.
Примітка : Ми не можемо оголосити класи та інтерфейси приватними в Java. Однак вкладені класи можна оголосити приватними. Щоб дізнатися більше, відвідайте вкладений та внутрішній клас Java.
Модифікатор захищеного доступу
Коли декларуються методи та члени даних protected
, ми можемо отримати до них доступ як в одному пакеті, так і з підкласів. Наприклад,
class Animal ( // protected method protected void display() ( System.out.println("I am an animal"); ) ) class Dog extends Animal ( public static void main(String() args) ( // create an object of Dog class Dog dog = new Dog(); // access protected method dog.display(); ) )
Вихід :
Я тварина
У наведеному вище прикладі ми маємо захищений метод, названий display()
всередині класу Animal. Клас Animal успадковується класом Dog. Щоб дізнатись більше про успадкування, відвідайте Java наслідування.
Потім ми створили об’єкт-собаку класу Dog. За допомогою об’єкта ми спробували отримати доступ до захищеного методу батьківського класу.
Оскільки захищені методи можна отримати з дочірніх класів, ми можемо отримати доступ до класу Animal з класу Dog.
Примітка : Ми не можемо оголосити класи або інтерфейси protected
в Java.
Модифікатор громадського доступу
Коли оголошуються методи, змінні, класи тощо public
, ми можемо отримати до них доступ з будь-якого місця. Модифікатор загальнодоступного доступу не має обмежень області. Наприклад,
// Animal.java file // public class public class Animal ( // public variable public int legCount; // public method public void display() ( System.out.println("I am an animal."); System.out.println("I have " + legCount + " legs."); ) ) // Main.java public class Main ( public static void main( String() args ) ( // accessing the public class Animal animal = new Animal(); // accessing the public variable animal.legCount = 4; // accessing the public method animal.display(); ) )
Вихід :
Я тварина. У мене 4 ноги.
Ось,
- Громадський клас Тварина доступний з Основного класу.
- Відкрита змінна legCount доступна з класу Main.
- Відкритий метод
display()
доступний з класу Main.
Модифікатори доступу, зведені на одному малюнку

Модифікатори доступу в основному використовуються для інкапсуляції. Я можу допомогти нам контролювати, яка частина програми може мати доступ до учасників класу. Так що запобігти зловживанню даними. Щоб дізнатися більше про інкапсуляцію, відвідайте Java Encapsulation.