logo

Модификатори на достъп в Java

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

В Java има два вида модификатори: модификатори за достъп и модификатори без достъп .

Модификаторите за достъп в Java определят достъпността или обхвата на поле, метод, конструктор или клас. Можем да променим нивото на достъп на полета, конструктори, методи и клас, като приложим модификатора за достъп върху него.

Има четири типа модификатори за достъп до Java:

    Частно: Нивото на достъп на частния модификатор е само в рамките на класа. Не може да бъде достъпен извън класа.По подразбиране: Нивото на достъп на модификатора по подразбиране е само в рамките на пакета. Не може да бъде достъпен извън пакета. Ако не посочите ниво на достъп, то ще бъде по подразбиране.Защитен: Нивото на достъп на защитен модификатор е в рамките на пакета и извън пакета чрез дъщерен клас. Ако не направите дъщерния клас, той не може да бъде достъпен извън пакета.Обществен: Нивото на достъп на публичен модификатор е навсякъде. Той може да бъде достъпен от класа, извън класа, в пакета и извън пакета.

Има много модификатори без достъп, като static, abstract, synchronized, native, volatile, transient и т.н. Тук ще научим само модификаторите за достъп.


Разбиране на модификаторите за достъп на Java

Нека разберем модификаторите за достъп в Java чрез проста таблица.

Модификатор на достъпв рамките на класав пакетавъншен пакет само по подкласвъншен пакет
Частно Иннн
По подразбиране ИИнн
Защитен ИИИн
Обществен ИИИИ

1) Частен

Модификаторът за частен достъп е достъпен само в рамките на класа.

ред на случаен принцип в sql

Прост пример за модификатор за частен достъп

В този пример създадохме два класа 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) По подразбиране

Ако не използвате модификатор, той се третира като по подразбиране по подразбиране. Модификаторът по подразбиране е достъпен само в пакета. Не може да бъде достъпен извън пакета. Осигурява повече достъпност от частния. Но тя е по-рестриктивна, отколкото защитена и публична.

шлока мехта образование

Пример за модификатор за достъп по подразбиране

В този пример създадохме два пакета 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 със замяна на метода

Ако замествате който и да е метод, замененият метод (т.е. деклариран в подклас) не трябва да бъде по-рестриктивен.

java concat низ
 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(); } } 

Модификаторът по подразбиране е по-рестриктивен, отколкото защитен. Ето защо има грешка по време на компилиране.