v Javě, veřejnost a soukromé jsou klíčová slova které jsou známé jako an modifikátor přístupu nebo specifikátor . Omezuje rozsah nebo přístupnost třídy, konstruktér , proměnné , metoda s a datovými členy. Záleží na tom, která se aplikuje. Java poskytuje čtyři typy modifikátorů přístupu: veřejný, soukromý, chráněný , a výchozí . Ale v této části budeme diskutovat pouze o dvou veřejných a soukromých a také o rozdíl mezi veřejným a soukromým specifikátorem přístupu s příkladem.
Modifikátory přístupu řídí, zda mohou jiné třídy používat konkrétní pole nebo vyvolat konkrétní metodu. Jáva poskytuje dvě úrovně řízení přístupu:
Následující tabulka ukazuje úroveň přístupu ke členům povolenou veřejnými a soukromými modifikátory.
nahrazení řetězce v jazyce Java
Stále nejsou jasné rozdíly mezi těmito dvěma? Dovolte mi ukázat vám obrázek, který ukazuje, jak úrovně přístupu ovlivňují viditelnost. Následující obrázek ukazuje dva balíčky p1 a p2 . Každý balíček obsahuje dvě třídy Demo1 a Demo2 (v balení p1), a Demo3 a Demo4 (v balení p2).
Následující tabulka popisuje viditelnost tříd, pokud třídy jednu po druhé nastavíme jako veřejné a soukromé. Na výše uvedeném obrázku je Demo1 jedinou třídou, která je viditelná pro každý modifikátor přístupu.
Pojďme to probrat podrobně.
Modifikátor veřejného přístupu
Lze jej specifikovat pomocí veřejnost klíčové slovo. Jeho rozsah nebo dostupnost je nejširší mezi ostatními specifikátory přístupu. K proměnným, třídám a metodám deklarovaným jako veřejné lze přistupovat odkudkoli v programu. Neukládá omezení rozsahu členů veřejných údajů. Pokud prohlásíme metody a třídy za veřejné, porušují také princip zapouzdření . Můžeme jej také použít s třídami nejvyšší úrovně.
Použijme specifikátor soukromého přístupu v a Java program pro lepší pochopení.
Demo1.java
turbo c++ ke stažení
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(); } }
Výstup
stažení javascriptu
Javatpoint
Modifikátor soukromého přístupu
Je opakem veřejného modifikátoru. Lze jej specifikovat pomocí soukromé klíčové slovo následované názvem třídy (aplikováno pouze na vnořené třídy) nebo názvem metody nebo datovým členem. Nemůžeme použít specifikátor soukromého přístupu s třídami nejvyšší úrovně resp rozhraní . K proměnným, metodám a třídám deklarovaným jako soukromé lze přistupovat pouze ve třídě, ve které jsou deklarovány, nebo zděděním nadřazených tříd. Je to nejvíce omezený specifikátor přístupu v Javě. Je to vysoká forma zapouzdření.
- Nemůžeme přepsat metody, které jsou deklarovány jako soukromé.
- Pokud použijeme modifikátor private s konstruktorem, zabráníme tomu, aby byl podtříděn.
- Skryje třídy před ostatními třídami ve stejné balík .
Pro lepší pochopení použijme specifikátor soukromého přístupu v programu Java.
V následujícím příkladu jsme deklarovali dvě třídy: Demo1 a Demo2. Ve třídě Demo1 jsme definovali metodu ukázat() jako soukromý. Třída Demo2 obsahuje metodu main(), ve které jsme vytvořili objekt třídy Demo1. Poté se snažíme o přístup k privátní metodě třídy Demo1 z třídy Demo2, což není možné. Ale přesto program spustíme, abychom viděli, jakou chybu ukazuje.
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(); } }
Když spustíme výše uvedený program, zobrazí se následující chyba:
Rozdíl mezi specifikátorem veřejného a soukromého přístupu v Javě
Hlavním rozdílem mezi veřejnými a soukromými modifikátory je jejich viditelnost. Java kategorizuje viditelnost pro členy třídy následovně:
- Podtřídy ve stejném balíčku
- Jiné než podtřídy ve stejném balíčku
- Podtřídy v různých balíčcích
- Třídy nejsou ve stejném balíčku ani podtřídy
Kterou bychom měli použít?
Modifikátor veřejného přístupu bychom měli použít, pokud chceme metodu nebo vlastnost zviditelnit odkudkoli, z jiných tříd a instancí objektu. Pokud chcete metodu nebo vlastnost zviditelnit pouze v její vlastní třídě, použijte modifikátor soukromého přístupu. Vyhněte se veřejným polím s výjimkou konstant.