- Modifikátor soukromého přístupu
- Role soukromého konstruktéra
- Výchozí modifikátor přístupu
- Modifikátor chráněného přístupu
- Modifikátor veřejného přístupu
- Modifikátor přístupu s přepsáním metody
V Javě existují dva typy modifikátorů: modifikátory přístupu a nepřístupové modifikátory .
Modifikátory přístupu v Javě určují přístupnost nebo rozsah pole, metody, konstruktoru nebo třídy. Můžeme změnit úroveň přístupu k polím, konstruktorům, metodám a třídám tím, že na ně použijeme modifikátor přístupu.
Existují čtyři typy modifikátorů přístupu Java:
Existuje mnoho nepřístupových modifikátorů, jako jsou statické, abstraktní, synchronizované, nativní, těkavé, přechodné atd. Zde se naučíme pouze modifikátory přístupu.
Pochopení Java Access Modifiers
Pojďme pochopit modifikátory přístupu v Javě jednoduchou tabulkou.
Modifikátor přístupu | v rámci třídy | v balení | vnější balíček pouze podle podtřídy | vnější balíček |
---|---|---|---|---|
Soukromé | A | N | N | N |
Výchozí | A | A | N | N |
Chráněný | A | A | A | N |
Veřejnost | A | A | A | A |
1) Soukromé
Modifikátor soukromého přístupu je přístupný pouze v rámci třídy.
binární typy stromů
Jednoduchý příklad modifikátoru soukromého přístupu
V tomto příkladu jsme vytvořili dvě třídy A a Simple. Třída obsahuje soukromý datový člen a soukromou metodu. K těmto soukromým členům přistupujeme mimo třídu, takže došlo k chybě při kompilaci.
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 } }
Role soukromého konstruktéra
Pokud nastavíte jakýkoli konstruktor třídy jako soukromý, nemůžete vytvořit instanci této třídy mimo třídu. Například:
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 } }
Poznámka: Třída nemůže být soukromá nebo chráněná kromě vnořené třídy.
2) Výchozí
Pokud nepoužijete žádný modifikátor, je považován za výchozí ve výchozím stavu. Výchozí modifikátor je přístupný pouze v rámci balíčku. Nelze k němu přistupovat z vnějšku balíčku. Poskytuje větší přístupnost než soukromé. Je však spíše omezující než chráněná a veřejná.
jak vrátit pole java
Příklad výchozího modifikátoru přístupu
V tomto příkladu jsme vytvořili dva balíčky pack a mypack. Ke třídě A přistupujeme z vnějšku jejího balíčku, protože třída A není veřejná, takže k ní nelze přistupovat z vnějšku balíčku.
//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 } }
Ve výše uvedeném příkladu je rozsah třídy A a její metody msg() výchozí, takže k ní nelze přistupovat z vnějšku balíčku.
3) Chráněno
The modifikátor chráněného přístupu je přístupný v rámci balíčku i mimo něj, ale pouze prostřednictvím dědičnosti.
Modifikátor chráněného přístupu lze použít na datový člen, metodu a konstruktor. Nelze jej aplikovat na třídu.
Poskytuje lepší přístupnost než výchozí modifikátor.
Příklad modifikátoru chráněného přístupu
V tomto příkladu jsme vytvořili dva balíčky pack a mypack. Balíček třídy A je veřejný, takže k němu lze přistupovat z vnějšku balíčku. Ale metoda msg tohoto balíčku je deklarována jako chráněná, takže k ní lze přistupovat z vnějšku třídy pouze prostřednictvím dědičnosti.
//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) Veřejné
The modifikátor veřejného přístupu je dostupná všude. Mezi všemi ostatními modifikátory má nejširší pole působnosti.
Příklad modifikátoru veřejného přístupu
//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
Modifikátory přístupu Java s přepsáním metody
Pokud přepisujete jakoukoli metodu, přepsaná metoda (tj. deklarovaná v podtřídě) nesmí být více omezující.
budkový algoritmus
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(); } }
Výchozí modifikátor je více omezující než chráněný. To je důvod, proč došlo k chybě při kompilaci.