- Modyfikator dostępu prywatnego
- Rola prywatnego konstruktora
- Domyślny modyfikator dostępu
- Chroniony modyfikator dostępu
- Modyfikator dostępu publicznego
- 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:
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ępu | w klasie | w pakiecie | pakiet zewnętrzny tylko według podklas | pakiet zewnętrzny |
---|---|---|---|---|
Prywatny | I | N | N | N |
Domyślny | I | I | N | N |
Chroniony | I | I | I | N |
Publiczny | I | I | I | I |
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.