logo

Modyfikatory dostępu w Javie

  1. Modyfikator dostępu prywatnego
  2. Rola prywatnego konstruktora
  3. Domyślny modyfikator dostępu
  4. Chroniony modyfikator dostępu
  5. Modyfikator dostępu publicznego
  6. Modyfikator dostępu z nadpisywaniem metody

W Javie istnieją dwa typy modyfikatorów: modyfikatory dostępu I modyfikatory bez dostępu .

Modyfikatory dostępu w Javie określają dostępność lub zakres pola, metody, konstruktora lub klasy. Poziom dostępu do pól, konstruktorów, metod i klas możemy zmieniać stosując na nich modyfikator dostępu.

Istnieją cztery typy modyfikatorów dostępu Java:

    Prywatny: Poziom dostępu prywatnego modyfikatora znajduje się tylko w obrębie klasy. Nie można uzyskać do niego dostępu spoza klasy.Domyślny: Poziom dostępu domyślnego modyfikatora znajduje się tylko w pakiecie. Nie można uzyskać do niego dostępu spoza pakietu. Jeśli nie określisz żadnego poziomu dostępu, będzie on domyślny.Chroniony: Poziom dostępu chronionego modyfikatora znajduje się w pakiecie i na zewnątrz pakietu poprzez klasę podrzędną. Jeśli nie utworzysz klasy podrzędnej, nie będzie można uzyskać do niej dostępu spoza pakietu.Publiczny: Poziom dostępu modyfikatora publicznego jest wszędzie. Można uzyskać do niego dostęp wewnątrz klasy, poza klasą, w pakiecie i poza pakietem.

Istnieje wiele modyfikatorów braku dostępu, takich jak statyczne, abstrakcyjne, zsynchronizowane, natywne, lotne, przejściowe itp. Tutaj nauczymy się tylko modyfikatorów dostępu.


Zrozumienie modyfikatorów dostępu Java

Przyjrzyjmy się modyfikatorom dostępu w Javie za pomocą prostej tabeli.

Modyfikator dostępuw klasiew pakieciepakiet zewnętrzny tylko według podklaspakiet zewnętrzny
Prywatny INNN
Domyślny IINN
Chroniony IIIN
Publiczny IIII

1) Prywatny

Modyfikator dostępu prywatnego jest dostępny tylko w obrębie klasy.

połącz bazę danych Java

Prosty przykład modyfikatora dostępu prywatnego

W tym przykładzie utworzyliśmy dwie klasy A i Simple. Klasa zawiera prywatny element danych i metodę prywatną. Uzyskujemy dostęp do tych prywatnych elementów spoza klasy, więc wystąpił błąd w czasie kompilacji.

 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 } } 

Rola prywatnego konstruktora

Jeśli ustawisz dowolny konstruktor klasy jako prywatny, nie będziesz mógł utworzyć instancji tej klasy spoza klasy. Na przykład:

 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 } } 

Uwaga: Klasa nie może być prywatna ani chroniona, z wyjątkiem klasy zagnieżdżonej.


2) Domyślne

Jeśli nie użyjesz żadnego modyfikatora, będzie on traktowany jako domyślny domyślnie. Domyślny modyfikator jest dostępny tylko w pakiecie. Nie można uzyskać do niego dostępu spoza pakietu. Zapewnia większą dostępność niż prywatny. Ale jest bardziej restrykcyjny niż chroniony i publiczny.

prawidłowe identyfikatory Java

Przykład domyślnego modyfikatora dostępu

W tym przykładzie utworzyliśmy dwa pakiety pack i mypack. Uzyskujemy dostęp do klasy A spoza jej pakietu, ponieważ klasa A nie jest publiczna, więc nie można uzyskać do niej dostępu spoza pakietu.

 //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 } } 

W powyższym przykładzie zasięg klasy A i jej metoda msg() jest domyślny, więc nie można uzyskać do niej dostępu spoza pakietu.


3) Chronione

The chroniony modyfikator dostępu jest dostępny w pakiecie i poza pakietem, ale tylko poprzez dziedziczenie.

Modyfikator chronionego dostępu można zastosować do elementu danych, metody i konstruktora. Nie można go zastosować w klasie.

słownik c#

Zapewnia większą dostępność niż domyślny modyfikator.

Przykład modyfikatora chronionego dostępu

W tym przykładzie utworzyliśmy dwa pakiety: pack i mypack. Pakiet klasy A jest publiczny, więc można uzyskać do niego dostęp spoza pakietu. Jednak metoda msg tego pakietu jest zadeklarowana jako chroniona, więc dostęp do niej można uzyskać spoza klasy tylko poprzez dziedziczenie.

 //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) Publiczne

The modyfikator dostępu publicznego jest dostępny wszędzie. Ma najszerszy zakres spośród wszystkich innych modyfikatorów.

Przykład modyfikatora dostępu publicznego

 //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 

Modyfikatory dostępu Java z nadpisywaniem metod

Jeśli nadpisujesz jakąkolwiek metodę, nadpisana metoda (tj. zadeklarowana w podklasie) nie może być bardziej restrykcyjna.

 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(); } } 

Domyślny modyfikator jest bardziej restrykcyjny niż chroniony. Dlatego występuje błąd w czasie kompilacji.