na Jawie, publiczny I prywatny Czy słowa kluczowe które są znane jako modyfikator dostępu Lub specyficzny . Ogranicza zakres lub dostępność klasy, konstruktor , zmienne , metoda s i elementy danych. To zależy od tego, gdzie się go zastosuje. Java udostępnia cztery typy modyfikatorów dostępu: publiczne, prywatne, chronione , I domyślny . Ale w tej sekcji omówimy tylko dwa publiczne i prywatne, a także omówimy różnica między specyfikatorem dostępu publicznego i prywatnego z przykładem.
Modyfikatory dostępu kontrolują, czy inne klasy mogą używać określonego pola lub wywoływać określoną metodę. Jawa zapewnia dwa poziomy kontroli dostępu:
W poniższej tabeli przedstawiono poziom dostępu członków dozwolony przez modyfikatory public i private.
b+ drzewa
Nadal nie rozumiesz różnic między nimi? Pokażę rysunek pokazujący, jak poziomy dostępu wpływają na widoczność. Poniższy rysunek przedstawia dwa pakiety p1 I p2 . Każdy pakiet zawiera dwie klasy Demo1 I Demo2 (w pakiecie p1), oraz Demo3 I Demo4 (w pakiecie p2).
Poniższa tabela opisuje widoczność klas, jeśli po kolei ustawimy je jako publiczne i prywatne. Na powyższym rysunku Demo1 jest jedyną klasą widoczną dla każdego modyfikatora dostępu.
Omówmy to szczegółowo.
Modyfikator dostępu publicznego
Można to określić za pomocą publiczny słowo kluczowe. Jego zakres lub dostępność jest najszersza spośród innych specyfikatorów dostępu. Dostęp do zmiennych, klas i metod zadeklarowanych jako publiczne można uzyskać z dowolnego miejsca w programie. Nie nakłada ograniczeń na zakres członków danych publicznych. Jeśli zadeklarujemy metody i klasy jako publiczne, naruszają one również zasadę kapsułkowanie . Możemy go również używać z klasami najwyższego poziomu.
Użyjmy specyfikatora dostępu prywatnego w pliku a Program Java dla lepszego zrozumienia.
Demo1.java
hashset Java
package p1; public class Demo1 { public void show() { System.out.println('Javatpoint'); } }
Demo2.java
package p2; import p1.*; class Demo2 { public static void main(String args[]) { Demo1 obj = new Demo1(); obj.show(); } }
Wyjście
Javatpoint
Modyfikator dostępu prywatnego
Jest przeciwieństwem modyfikatora public. Można to określić za pomocą prywatny słowo kluczowe, po którym następuje nazwa klasy (stosowane tylko w klasach zagnieżdżonych) lub nazwa metody lub element danych. Nie możemy używać specyfikatora dostępu prywatnego z klasami najwyższego poziomu lub interfejsy . Dostęp do zmiennych, metod i klas zadeklarowanych jako prywatne można uzyskać tylko w klasie, w której zostały zadeklarowane, lub poprzez dziedziczenie klas nadrzędnych. Jest to najbardziej ograniczony specyfikator dostępu w Javie. Jest to szczytowa forma enkapsulacji.
- Nie możemy nadpisanie metody zadeklarowane jako prywatne.
- Jeśli użyjemy modyfikatora private z konstruktorem, unikniemy jego podklasy.
- Ukrywa klasy przed innymi klasami w tym samym pakiet .
Dla lepszego zrozumienia użyjmy specyfikatora dostępu prywatnego w programie Java.
obiad vs czas kolacji
W poniższym przykładzie zadeklarowaliśmy dwie klasy: Demo1 i Demo2. W klasie Demo1 zdefiniowaliśmy metodę pokazywać() jako prywatny. Klasa Demo2 zawiera metodę main(), w której utworzyliśmy obiekt klasy Demo1. Następnie próbujemy uzyskać dostęp do prywatnej metody klasy Demo1 z klasy Demo2, co nie jest możliwe. Mimo to uruchomimy program, aby zobaczyć, jaki błąd pokazuje.
class Demo1 { //defining method as private private void show() { System.out.println('Javatpoint'); } } public class Demo2 { public static void main(String args[]) { Demo1 obj = new Demo1(); //trying to access private method of the class Demo1 obj.show(); } }
Kiedy wykonujemy powyższy program, pokazuje następujący błąd:
Różnica między specyfikatorem dostępu publicznego i prywatnego w Javie
Główną różnicą między modyfikatorami publicznymi i prywatnymi jest ich widoczność. Java kategoryzuje widoczność członków klasy w następujący sposób:
- Podklasy w tym samym pakiecie
- Podklasy inne niż podklasy w tym samym pakiecie
- Podklasy w różnych pakietach
- Klasy nie należące do tego samego pakietu ani podklas
Którego powinniśmy użyć?
Modyfikatora dostępu publicznego powinniśmy używać, jeśli chcemy, aby metoda lub właściwość była widoczna z dowolnego miejsca, innych klas i instancji obiektu. Użyj modyfikatora dostępu prywatnego, jeśli chcesz, aby metoda lub właściwość była widoczna tylko w jej własnej klasie. Unikaj pól publicznych z wyjątkiem stałych.