logo

Nyilvános vs privát Java

Java nyelven, nyilvános és magán vannak kulcsszavakat amelyek an hozzáférés módosító vagy specifikáló . Korlátozza egy osztály hatókörét vagy hozzáférhetőségét, konstruktőr , változók , módszer s, és adattagok. Attól függ, melyiket alkalmazzák. A Java négyféle hozzáférés-módosítót kínál: nyilvános, privát, védett , és alapértelmezett . De ebben a részben csak két nyilvános és privát, valamint a különbség a nyilvános és a privát hozzáférés-specifikátor között példával.

A hozzáférés-módosítók szabályozzák, hogy más osztályok használhatnak-e egy adott mezőt, vagy meghívhatnak-e egy adott metódust. Jáva két szintű hozzáférés-vezérlést biztosít:

    Felső szint:Ezen a szinten csak a nyilvános Tagsági szint:Ezen a szinten tudjuk használni nyilvános, privát, védett és csomag-privát (ha nem használunk explicit módosítót, az a package-private néven ismert).

A következő táblázat a tagok nyilvános és privát módosítói által engedélyezett hozzáférési szintjét mutatja.

log4j
Nyilvános vs privát Java

Még mindig nem világos a kettő közötti különbség? Hadd mutassak meg egy ábrát, amely bemutatja, hogy a hozzáférési szintek hogyan befolyásolják a láthatóságot. A következő ábrán a két csomag látható p1 és p2 . Minden csomag két osztályt tartalmaz Demo1 és Demo2 (a p1 csomagban), és Demo3 és Demo4 (a p2 csomagban).

Nyilvános vs privát Java

Az alábbi táblázat az osztályok láthatóságát írja le, ha az osztályokat egyenként nyilvánossá és priváttá tesszük. A fenti ábrán a Demo1 az egyetlen osztály, amely minden hozzáférésmódosítónál látható.

Nyilvános vs privát Java

Beszéljük meg részletesen.

Nyilvános hozzáférés módosító

A segítségével megadható nyilvános kulcsszó. Hatóköre vagy hozzáférhetősége a legszélesebb körű a többi hozzáférés-specifikáció között. A nyilvánosnak deklarált változók, osztályok és metódusok a program minden részéből elérhetők. Nem ír elő korlátozást a nyilvános adattagok körére. Ha a metódusokat és osztályokat publikusnak nyilvánítjuk, akkor azok is sértik az elvet Egységbezárás . Használhatjuk a felső szintű osztályokkal is.

Használjuk a privát hozzáférés specifikátort a Java program a jobb megértés érdekében.

Demo1.java

élő tücskömet
 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(); } } 

Kimenet

 Javatpoint 

Privát hozzáférés módosító

Ez a nyilvános módosító ellentéte. A segítségével megadható magán kulcsszó után az osztály neve (csak beágyazott osztályokra vonatkozik) vagy a metódus neve vagy adattag. A privát hozzáférés-specifikátort nem használhatjuk a legfelső szintű osztályokkal ill interfészek . A privátként deklarált változók, metódusok és osztályok csak abban az osztályban érhetők el, amelyben deklarálva vannak, vagy a szülőosztályok öröklésével. Ez a Java legkorlátozottabb hozzáférési specifikációja. Ez a tokozás magassági formája.

  • Nem tudjuk felülbírálni a privátként deklarált metódusok.
  • Ha a privát módosítót használjuk a konstruktorral, elkerüljük az alosztályozást.
  • Elrejti az osztályokat a többi osztály elől csomag .

Használjuk a privát hozzáférés-specifikátort egy Java programban a jobb megértés érdekében.

A következő példában két osztályt deklaráltunk: Demo1 és Demo2. A Demo1 osztályban definiáltunk egy metódust előadás() mint privát. A Demo2 osztály tartalmazza a main() metódust, amelyben létrehoztuk a Demo1 osztály objektumát. Ezt követően a Demo1 osztály privát metódusát próbáljuk elérni a Demo2 osztályból, ez nem lehetséges. Ennek ellenére végrehajtjuk a programot, hogy megnézzük, melyik hibát mutatja.

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

Amikor végrehajtjuk a fenti programot, a következő hibát mutatja:

javascript base64 dekódolása
Nyilvános vs privát Java

Különbség a nyilvános és a privát hozzáférés-specifikátor között a Java-ban

A fő különbség a nyilvános és a privát módosítók között a láthatóság. A Java a következőképpen kategorizálja az osztálytagok láthatóságát:

  • Alosztályok ugyanabban a csomagban
  • Nem alosztályok ugyanabban a csomagban
  • Alosztályok különböző csomagokban
  • Osztályok sem ugyanabban a csomagban, sem nem alosztályokban
Nyilvános vs privát Java

Melyiket használjuk?

Nyilvános hozzáférés módosítót kell használnunk, ha a metódust vagy tulajdonságot bárhonnan, az objektum más osztályaiból és példányaiból láthatóvá akarjuk tenni. Használja a privát hozzáférés módosítót, ha a metódust vagy tulajdonságot csak a saját osztályában szeretné láthatóvá tenni. Kerülje a nyilvános mezőket, kivéve a konstansokat.