Hozzáférés módosítók Java-ban

1. Áttekintés

Ebben az oktatóanyagban áttekintjük a Java hozzáférés-módosítóit, amelyek az osztályok, változók, módszerek és konstruktorok hozzáférési szintjének beállítására szolgálnak.

Egyszerűen fogalmazva, négy hozzáférés-módosító létezik:nyilvános, magán, védett és alapértelmezett (nincs kulcsszó).

Mielőtt elkezdenénk, vegye figyelembe, hogy egy felső szintű osztály használhatja nyilvános vagy alapértelmezett csak hozzáférés módosítók. Tagszinten mind a négyet felhasználhatjuk.

2. Alapértelmezett

Amikor nem használunk kifejezetten egyetlen kulcsszót sem, a Java a-t állítja be alapértelmezett hozzáférés egy adott osztályhoz, módszerhez vagy tulajdonsághoz. Az alapértelmezett hozzáférés-módosítót is hívják csomag-magán, ami azt jelenti az összes tag látható ugyanazon a csomagon belül de más csomagokból nem érhetők el:

com.baeldung.accessmodifiers csomag; public class SuperPublic {static void defaultMethod () {...}}

defaultMethod () elérhető ugyanazon csomag másik osztályában:

com.baeldung.accessmodifiers csomag; public class Public {public Public () {SuperPublic.defaultMethod (); // Ugyanabban a csomagban kapható. }}

Más csomagokban azonban nem érhető el.

3. Nyilvános

Ha hozzáadjuk a nyilvános kulcsszó egy osztályhoz, módszerhez vagy tulajdonsághoz elérhetővé tesszük az egész világ számára, vagyis az összes csomag összes többi osztálya képes lesz használni. Ez a legkevésbé korlátozó hozzáférés-módosító:

com.baeldung.accessmodifiers csomag; public class SuperPublic {public static void publicMethod () {...}}

publicMethod () egy másik csomagban kapható:

csomag com.baeldung.accessmodifiers.another; import com.baeldung.accessmodifiers.SuperPublic; public class AnotherPublic {public AnotherPublic () {SuperPublic.publicMethod (); // Mindenhol elérhető. Jegyezzünk meg egy másik csomagot. }}

További részletek arról, hogyan nyilvános kulcsszó viselkedik, ha osztályra, felületre, beágyazott nyilvános osztályra vagy felületre és módszerre alkalmazzák, lásd a dedikált cikket.

4. Privát

Bármely módszer, tulajdonság vagy konstruktor a magán kulcsszó csak ugyanabból az osztályból érhető el. Ez a legkorlátozóbb hozzáférés-módosító és a kapszulázás koncepciójának központi eleme. Minden adat el lesz rejtve a külvilág elől:

com.baeldung.accessmodifiers csomag; public class SuperPublic {static private void privateMethod () {...} private void anotherPrivateMethod () {privateMethod (); // csak ugyanabban az osztályban érhető el. }}

Ez a részletesebb cikk megmutatja, hogy a magán a kulcsszó akkor viselkedik, ha egy mezőre, konstruktorra, módszerre és egy belső osztályra alkalmazzák.

5. Védett

Között nyilvános és magán hozzáférési szintek, ott van a védett hozzáférés módosító.

Ha deklarálunk egy metódust, tulajdonságot vagy konstruktort a védett kulcsszó, a taghoz a ugyanaz a csomag (mint a csomag-privát hozzáférési szint) és ezen felül osztályának minden alosztályából, még akkor is, ha más csomagokban fekszenek:

com.baeldung.accessmodifiers csomag; public class SuperPublic {static protected void protectedMethod () {...}}

protectedMethod () alosztályokban érhető el (a csomagtól függetlenül):

csomag com.baeldung.accessmodifiers.another; import com.baeldung.accessmodifiers.SuperPublic; public class AnotherSubClass kiterjeszti a SuperPublic {public AnotherSubClass () {SuperPublic.protectedMethod (); // Alosztályban elérhető. Jegyezzünk meg más csomagot. }}

A dedikált cikk részletesebben leírja a kulcsszót, ha azt egy mezőben, módszerben, konstruktorban, belső osztályban használják, valamint az ugyanabban a csomagban vagy egy másik csomagban található akadálymentességről.

6. Összehasonlítás

Az alábbi táblázat összefoglalja az elérhető hozzáférés-módosítókat. Láthatjuk, hogy egy osztály, függetlenül a használt hozzáférés-módosítóktól, mindig hozzáfér a tagjaihoz:

MódosítóOsztályCsomagAlosztályVilág
nyilvános
YYYY
védett
YYYN
alapértelmezett
YYNN
magán
YNNN

7. Következtetés

Ebben a rövid cikkben áttekintettük a Java hozzáférés-módosítóit.

Jó gyakorlat, ha a tagok számára a lehető legszigorúbb hozzáférési szintet alkalmazzuk a visszaélések megakadályozása érdekében. Mindig a magán hozzáférés-módosító, kivéve, ha jó ok van rá.

Nyilvános hozzáférési szintet csak akkor szabad használni, ha egy tag egy API része.

Mint mindig, a kódpéldák elérhetők a Github oldalon.