„Súkromný“ modifikátor prístupu Java

1. Prehľad

V programovacom jazyku Java môžu byť polia, konštruktory, metódy a triedy označené modifikátormi prístupu. V tomto výučbe si povieme niečo o súkromné modifikátor prístupu v Jave.

2. Kľúčové slovo

The súkromné modifikátor prístupu je dôležitý, pretože umožňuje zapuzdrenie a skrytie informácií, čo sú základné princípy objektovo orientovaného programovania. Zapuzdrenie je zodpovedné za spájanie metód a údajov, zatiaľ čo skrývanie informácií je dôsledkom zapuzdrenia - skrýva vnútornú reprezentáciu objektu.

Prvá vec, ktorú si treba pamätať, je to prvky deklarované ako súkromné je prístupná iba pre triedu, v ktorej sú deklarované.

3. Polia

Teraz uvidíme niekoľko jednoduchých príkladov kódu, aby sme lepšie porozumeli téme.

Najprv si vytvorme Zamestnanec trieda obsahujúca pár súkromné premenné inštancie:

public class Employee {private String privateId; súkromný boolean manažér; // ...}

V tomto príklade sme označili privateId premenná ako súkromné pretože chceme pridať trochu logiky do generácie id. A ako vidíme, urobili sme to isté manažér tento atribút, pretože nechceme povoliť priamu úpravu tohto poľa.

4. Konštruktéri

Vytvorme teraz súkromné konštruktér:

private Employee (String id, String name, boolean managerAttribute) {this.name = name; this.privateId = id + "_ID-MANAGER"; }

Označením nášho konštruktéra ako súkromné, môžeme ho použiť iba z vnútra našej triedy.

Pridajme a statický metóda, ktorá bude naším jediným spôsobom, ako to využiť súkromné konštruktér zvonku Zamestnanec trieda:

public static Employee buildManager (String id, String name) {return new Employee (id, name, true); }

Teraz môžeme získať inštanciu nášho manažéra Zamestnanec triedy jednoduchým napísaním:

Správca zamestnancov = Employee.buildManager ("123MAN", "Bob");

A v zákulisí samozrejme buildManager metóda volá naše súkromné konštruktér.

5. Metódy

Teraz pridajme a súkromné metóda do našej triedy:

private void setManager (boolean manager) {this.manager = manager; }

A predpokladajme, že z nejakého dôvodu máme v našej spoločnosti svojvoľné pravidlo, podľa ktorého môže byť do funkcie manažéra povýšený iba zamestnanec menom „Carl“, hoci iné triedy o tom nevedia. Vytvoríme verejné metóda s určitou logikou na zvládnutie tohto pravidla, ktoré volá naše súkromné metóda:

public void elevateToManager () {if ("Carl" .equals (this.name)) {setManager (true); }}

6. súkromné v akcii

Pozrime sa na príklad, ako používať náš Zamestnanec trieda zvonku:

public class ExampleClass {public static void main (String [] args) {Employee employee = new Employee ("Bob", "ABC123"); employee.setPrivateId ("BCD234"); System.out.println (employee.getPrivateId ()); }}

Po vykonaní ExampleClass, uvidíme jeho výstup na konzole:

BCD234_ID

V tomto príklade sme použili verejné konštruktér a verejné metóda changeId (customId) pretože nemáme prístup k súkromné premenná privateId priamo.

Pozrime sa čo sa stane, keď sa pokúsime získať prístup k a súkromné metóda, konštruktor alebo premenná zvonku nášho Zamestnanec trieda:

public class ExampleClass {public static void main (String [] args) {Employee employee = new Employee ("Bob", "ABC123", true); employee.setManager (true); employee.privateId = "ABC234"; }}

Dostaneme chyby kompilácie za každé naše nezákonné vyhlásenie:

Konštruktor Employee (String, String, boolean) nie je viditeľný Metóda setManager (boolean) z typu Employee nie je viditeľná Pole Employee.privateId nie je viditeľné

7. Triedy

Existuje jeden špeciálny prípad, keď môžeme vytvoriť a súkromné trieda - ako vnútorná trieda nejakej inej triedy. Inak, ak by sme vyhlásili vonkajšiu triedu za súkromné, zakazovali by sme iným triedam prístup k nim, čo by ich zneužilo:

public class PublicOuterClass {public PrivateInnerClass getInnerClassInstance () {PrivateInnerClass myPrivateClassInstance = this.new PrivateInnerClass (); myPrivateClassInstance.id = "ID1"; myPrivateClassInstance.name = "Bob"; vrátiť myPrivateClassInstance; } súkromná trieda PrivateInnerClass {verejné Názov reťazca; verejné ID reťazca; }}

V tomto príklade sme vytvorili a súkromné vnútorná trieda vo vnútri našej PublicOuterClass uvedením súkromné modifikátor prístupu.

Pretože sme použili súkromné kľúčové slovo, ak z nejakého dôvodu skúste vytvoriť inštanciu nášho PrivateInnerClass zvonku PublicOuterClasssa kód nebude kompilovať a zobrazí sa chyba:

PrivateInnerClass sa nedá rozlíšiť na typ

8. Záver

V tomto rýchlom výučbe sme diskutovali o súkromné modifikátor prístupu v Jave. Je to dobrý spôsob, ako dosiahnuť zapuzdrenie, ktoré vedie k skrytiu informácií. Vďaka tomu môžeme zabezpečiť, aby sme iným triedam vystavili iba údaje a požadované správanie.

Príklad kódu je ako vždy k dispozícii na GitHub.