Modifikátory prístupu v Jave

1. Prehľad

V tomto výučbe sa zaoberáme modifikátormi prístupu v Jave, ktoré sa používajú na nastavenie úrovne prístupu pre triedy, premenné, metódy a konštruktory.

Jednoducho povedané, existujú štyri modifikátory prístupu:verejné, súkromné, chránené a predvolené (bez kľúčového slova).

Než začneme, všimnime si, že trieda najvyššej úrovne môže byť použitá verejné alebo predvolené iba modifikátory prístupu. Na úrovni členov môžeme využívať všetky štyri.

2. Predvolené

Ak výslovne nepoužívame žiadne kľúčové slovo, Java nastaví a predvolené prístup k danej triede, metóde alebo vlastnosti. Tiež sa volá predvolený modifikátor prístupu balík-súkromné, čo znamená, že všetci členovia sú viditeľní v rovnakom balíku ale nie sú prístupné z iných balíkov:

balíček com.baeldung.accessmodifiers; verejná trieda SuperPublic {static void defaultMethod () {...}}

defaultMethod () je prístupný v inej triede rovnakého balíka:

balíček com.baeldung.accessmodifiers; public class Public {public Public () {SuperPublic.defaultMethod (); // K dispozícii v rovnakom balíku. }}

Nie je však k dispozícii v iných balíkoch.

3. Verejné

Ak pridáme verejné kľúčové slovo pre triedu, metódu alebo vlastnosť sprístupňujeme ho celému svetu, tj. budú ho môcť používať všetky ostatné triedy vo všetkých balíkoch. Toto je najmenej obmedzujúci modifikátor prístupu:

balíček com.baeldung.accessmodifiers; public class SuperPublic {public static void publicMethod () {...}}

publicMethod () je k dispozícii v inom balíku:

balík com.baeldung.accessmodifiers.another; import com.baeldung.accessmodifiers.SuperPublic; public class AnotherPublic {public AnotherPublic () {SuperPublic.publicMethod (); // K dispozícii všade. Poznamenajme iné balenie. }}

Viac informácií o tom, ako verejné kľúčové slovo sa chová pri použití na triedu, rozhranie, vnorenú verejnú triedu alebo rozhranie a metódu, pozrite si vyhradený článok.

4. Súkromné

Akákoľvek metóda, vlastnosť alebo konštruktor s súkromné kľúčové slovo je prístupný iba z tej istej triedy. Toto je najprísnejší modifikátor prístupu a je jadrom koncepcie zapuzdrenia. Všetky údaje budú skryté pred okolitým svetom:

balíček com.baeldung.accessmodifiers; public class SuperPublic {static private void privateMethod () {...} private void anotherPrivateMethod () {privateMethod (); // k dispozícii iba v tej istej triede. }}

Tento podrobnejší článok ukáže, ako súkromné kľúčové slovo sa chová pri použití na pole, konštruktor, metódu a na vnútornú triedu.

5. Chránené

Medzi verejné a súkromné úrovne prístupu, tu je chránené modifikátor prístupu.

Ak deklarujeme metódu, vlastnosť alebo konštruktor pomocou chránené kľúčové slovo, môžeme získať prístup k členovi z rovnaké balenie (ako s balík-súkromné úroveň prístupu) a navyše zo všetkých podtried svojej triedy, aj keď ležia v iných baleniach:

balíček com.baeldung.accessmodifiers; verejná trieda SuperPublic {static protected void protectedMethod () {...}}

protectedMethod () je k dispozícii v podtriedach (bez ohľadu na balík):

balík com.baeldung.accessmodifiers.another; import com.baeldung.accessmodifiers.SuperPublic; public class AnotherSubClass extends SuperPublic {public AnotherSubClass () {SuperPublic.protectedMethod (); // K dispozícii v podtriede. Poznamenajme iné balenie. }}

Venovaný článok popisuje viac informácií o kľúčovom slove, ak sa používa v poli, metóde, konštruktore, vnútornej triede a prístupnosti v rovnakom alebo inom balíku.

6. Porovnanie

V nasledujúcej tabuľke sú zhrnuté dostupné modifikátory prístupu. Vidíme, že trieda, bez ohľadu na použité modifikátory prístupu, má vždy prístup k svojim členom:

ModifikátorTriedaBalíčekPodtriedaSvet
verejné
Y.Y.Y.Y.
chránené
Y.Y.Y.N
predvolené
Y.Y.NN
súkromné
Y.NNN

7. Záver

V tomto krátkom článku sme si prešli modifikátormi prístupu v Jave.

Je dobrým zvykom používať čo najprísnejšiu možnú úroveň prístupu pre daného člena, aby sa zabránilo zneužitiu. Mali by sme vždy používať súkromné modifikátor prístupu, pokiaľ na to neexistuje dobrý dôvod.

Verejné úroveň prístupu by sa mala používať, iba ak je člen súčasťou API.

Príklady kódov sú ako vždy k dispozícii na stránkach Github.


$config[zx-auto] not found$config[zx-overlay] not found