- Модифікатор приватного доступу
- Роль приватного забудовника
- Модифікатор доступу за замовчуванням
- Модифікатор захищеного доступу
- Модифікатор публічного доступу
- Модифікатор доступу з перевизначенням методу
У 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(); } }
Модифікатор за умовчанням є більш обмежувальним, ніж захищений. Ось чому виникає помилка під час компіляції.