logo

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

  1. Модифікатор приватного доступу
  2. Роль приватного забудовника
  3. Модифікатор доступу за замовчуванням
  4. Модифікатор захищеного доступу
  5. Модифікатор публічного доступу
  6. Модифікатор доступу з перевизначенням методу

У Java є два типи модифікаторів: модифікатори доступу і модифікатори без доступу .

Модифікатори доступу в Java визначають доступність або область дії поля, методу, конструктора або класу. Ми можемо змінити рівень доступу до полів, конструкторів, методів і класу, застосувавши до них модифікатор доступу.

Існує чотири типи модифікаторів доступу Java:

    Приватний: рівень доступу приватного модифікатора є лише в межах класу. До нього неможливо отримати доступ поза класом.За замовчуванням: Рівень доступу модифікатора за замовчуванням є лише в межах пакета. Доступ до нього неможливий поза пакетом. Якщо ви не вкажете рівень доступу, він буде стандартним.Захищений: рівень доступу захищеного модифікатора знаходиться всередині пакета та поза пакетом через дочірній клас. Якщо ви не створите дочірній клас, до нього не можна буде отримати доступ поза пакетом.Громадський: Рівень доступу публічного модифікатора є скрізь. До нього можна отримати доступ із класу, поза класом, із пакета та поза пакетом.

Існує багато модифікаторів без доступу, таких як static, abstract, synchronized, native, volatile, transient тощо. Тут ми збираємося вивчити лише модифікатори доступу.


Розуміння модифікаторів доступу Java

Давайте розберемося з модифікаторами доступу в Java за допомогою простої таблиці.

Модифікатор доступув межах класув пакетізовнішній пакет лише за підкласомзовнішній пакет
Приватний ІННН
За замовчуванням ІІНН
Захищений ІІІН
Громадський ІІІІ

1) Приватний

Модифікатор приватного доступу доступний лише в межах класу.

приклад списку в java

Простий приклад модифікатора приватного доступу

У цьому прикладі ми створили два класи A і Simple. Клас містить приватний елемент даних і приватний метод. Ми отримуємо доступ до цих приватних членів поза класом, тому сталася помилка під час компіляції.

 class A{ private int data=40; private void msg(){System.out.println('Hello java');} } public class Simple{ public static void main(String args[]){ A obj=new A(); System.out.println(obj.data);//Compile Time Error obj.msg();//Compile Time Error } } 

Роль приватного забудовника

Якщо ви робите будь-який конструктор класу приватним, ви не можете створити екземпляр цього класу поза межами класу. Наприклад:

 class A{ private A(){}//private constructor void msg(){System.out.println('Hello java');} } public class Simple{ public static void main(String args[]){ A obj=new A();//Compile Time Error } } 

Примітка. Клас не може бути приватним або захищеним, за винятком вкладеного класу.


2) За замовчуванням

Якщо ви не використовуєте жодного модифікатора, він розглядається як за замовчуванням за замовчуванням. Модифікатор за замовчуванням доступний лише в пакеті. Доступ до нього неможливий поза пакетом. Він забезпечує більшу доступність, ніж приватний. Але, він більш обмежувальний, ніж захищений, і публічний.

нарізка масиву java

Приклад стандартного модифікатора доступу

У цьому прикладі ми створили два пакети pack і mypack. Ми отримуємо доступ до класу A поза пакетом, оскільки клас A не є загальнодоступним, тому до нього неможливо отримати доступ поза пакетом.

 //save by A.java package pack; class A{ void msg(){System.out.println('Hello');} } 
 //save by B.java package mypack; import pack.*; class B{ public static void main(String args[]){ A obj = new A();//Compile Time Error obj.msg();//Compile Time Error } } 

У наведеному вище прикладі область класу A та його метод msg() задані за замовчуванням, тому до них неможливо отримати доступ поза пакетом.


3) Захищений

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

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

Він забезпечує більшу доступність, ніж модифікатор за замовчуванням.

Приклад модифікатора захищеного доступу

У цьому прикладі ми створили два пакети pack і mypack. Пакет пакету класу A є загальнодоступним, тому до нього можна отримати доступ поза пакетом. Але метод msg цього пакета оголошено як захищений, тому до нього можна отримати доступ ззовні класу лише через успадкування.

 //save by A.java package pack; public class A{ protected void msg(){System.out.println('Hello');} } 
 //save by B.java package mypack; import pack.*; class B extends A{ public static void main(String args[]){ B obj = new B(); obj.msg(); } } 
 Output:Hello 

4) Громадський

The модифікатор публічного доступу доступний всюди. Має найширшу сферу застосування серед усіх інших модифікаторів.

екта капур актор

Приклад модифікатора публічного доступу

 //save by A.java package pack; public class A{ public void msg(){System.out.println('Hello');} } 
 //save by B.java package mypack; import pack.*; class B{ public static void main(String args[]){ A obj = new A(); obj.msg(); } } 
 Output:Hello 

Модифікатори доступу Java із заміною методів

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

 class A{ protected void msg(){System.out.println('Hello java');} } public class Simple extends A{ void msg(){System.out.println('Hello java');}//C.T.Error public static void main(String args[]){ Simple obj=new Simple(); obj.msg(); } } 

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