logo

Modifikátory přístupu v Javě

  1. Modifikátor soukromého přístupu
  2. Role soukromého konstruktéra
  3. Výchozí modifikátor přístupu
  4. Modifikátor chráněného přístupu
  5. Modifikátor veřejného přístupu
  6. 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:

    Soukromé: Úroveň přístupu soukromého modifikátoru je pouze v rámci třídy. Není k němu přístup zvenčí třídy.Výchozí: Úroveň přístupu výchozího modifikátoru je pouze v rámci balíčku. Nelze k němu přistupovat z vnějšku balíčku. Pokud neurčíte žádnou úroveň přístupu, bude to výchozí.Chráněný: Úroveň přístupu chráněného modifikátoru je uvnitř balíčku a mimo balíček prostřednictvím podřízené třídy. Pokud podřízenou třídu neprovedete, nebude k ní přístup mimo balíček.Veřejnost: Úroveň přístupu veřejného modifikátoru je všude. Lze k němu přistupovat ze třídy, mimo třídu, v rámci balíčku i mimo balíček.

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řístupuv rámci třídyv balenívnější balíček pouze podle podtřídyvnější balíček
Soukromé ANNN
Výchozí AANN
Chráněný AAAN
Veřejnost AAAA

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.