logo

Veřejné versus soukromé Java

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:

    Nejvyšší úroveň:Na této úrovni můžeme použít pouze a veřejnost Členská úroveň:Na této úrovni můžeme použít veřejný, soukromý, chráněný a balíček-soukromý (pokud nepoužíváme žádný explicitní modifikátor, je znám jako package-private).

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
Public vs Private 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).

Veřejné versus soukromé Java

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.

Veřejné versus soukromé Java

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:

Veřejné versus soukromé Java

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
Veřejné versus soukromé Java

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.