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ály | Csomag | Alosztály | Világ |
---|---|---|---|---|
nyilvános | Y | Y | Y | Y |
védett | Y | Y | Y | N |
alapértelmezett | Y | Y | N | N |
magán | Y | N | N | N |
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.