- Модификатор за частен достъп
- Роля на частен строител
- Модификатор за достъп по подразбиране
- Модификатор на защитен достъп
- Модификатор за публичен достъп
- Модификатор на достъп с отмяна на метода
В 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(); } }
Модификаторът по подразбиране е по-рестриктивен, отколкото защитен. Ето защо има грешка по време на компилиране.