Java ‘privát’ Access Modifier

1. Áttekintés

A Java programozási nyelvben a mezőket, a konstruktorokat, a módszereket és az osztályokat hozzáférés-módosítókkal lehet megjelölni. Ebben az oktatóanyagban a magán hozzáférés módosító Java-ban.

2. A kulcsszó

A magán A hozzáférés-módosító azért fontos, mert lehetővé teszi a beágyazást és az információk elrejtését, amelyek az objektum-orientált programozás alapelvei. A beágyazás felelős a módszerek és adatok összekapcsolásáért, míg az információk elrejtése a beágyazás következménye - elrejti az objektum belső reprezentációját.

Az első dolog, amire emlékezni kell elemként deklarált elemek magán csak az az osztály férhet hozzá, amelyben deklarálták.

3. Mezők

Most néhány egyszerű kód példát fogunk látni, hogy jobban megértsük a témát.

Először hozzunk létre egy Munkavállaló osztály tartalmaz egy pár magán Példányváltozók:

public class Alkalmazott {private String privateId; saját logikai menedzser; // ...}

Ebben a példában a privateId változó as magán mert valamilyen logikát akarunk hozzáadni az id generáláshoz. És mint láthatjuk, ugyanezt tettük menedzser attribútumot, mert nem akarjuk engedélyezni a mező közvetlen módosítását.

4. Konstruktorok

Most hozzunk létre egy magán konstruktőr:

privát alkalmazott (karakterlánc azonosító, karakterlánc neve, logikai managerAttribute) {this.name = név; this.privateId = id + "_ID-MANAGER"; }

Kivitelezőnk jelölésével magán, csak az osztályunkon belül használhatjuk.

Tegyük hozzá a statikus módszer, amely ennek egyetlen módja lesz magán kivitelező kívülről Munkavállaló osztály:

public static Employee buildManager (String id, String name) {return new Employee (azonosító, név, igaz); }

Most megszerezhetünk egy menedzser példányt Munkavállaló osztály egyszerűen megírva:

Employee manager = Employee.buildManager ("123MAN", "Bob");

És a kulisszák mögött természetesen az buildManager módszer a mi magán konstruktőr.

5. Módszerek

Tegyük most hozzá a magán módszer az osztályunkhoz:

private void setManager (logikai kezelő) {this.manager = kezelő; }

Tegyük fel, hogy valamilyen okból van egy önkényes szabályunk a vállalatunkban, amelyben csak egy „Carl” nevű alkalmazottat lehet előléptetni vezetővé, bár más osztályok nem tudnak erről. Létrehozunk egy nyilvános metódus némi logikával ennek a szabálynak a kezelésére, amely hívja a magán módszer:

public void elevateToManager () {if ("Carl" .egyenlő (ez.név)) {setManager (igaz); }}

6. magán akcióban

Lássunk egy példát a mi használatára Munkavállaló osztály kívülről:

public class ExampleClass {public static void main (String [] args) {Alkalmazott alkalmazott = új alkalmazott ("Bob", "ABC123"); worker.setPrivateId ("BCD234"); System.out.println (alkalmazott.getPrivateId ()); }}

Végrehajtás után ExampleClass, látni fogjuk a kimenetét a konzolon:

BCD234_ID

Ebben a példában a nyilvános kivitelező és a nyilvános módszer changeId (customId) mert nem férünk hozzá a magán változó privateId közvetlenül.

Lássuk mi történik, ha megpróbálunk hozzáférni a magán módszer, konstruktor vagy változó kívülről Munkavállaló osztály:

public class ExampleClass {public static void main (String [] args) {Munkavállalói alkalmazott = új Munkavállaló ("Bob", "ABC123", igaz); alkalmazott.setManager (igaz); alkalmazott.privateId = "ABC234"; }}

Összeállítási hibákat fogunk kapni minden illegális nyilatkozatunkért:

A konstruktor Employee (String, String, logikai) nem látható A setManager (logikai) metódus az Employee típusból nem látható Az Employee.privateId mező nem látható

7. Osztályok

Van egy különleges eset, amikor létrehozhatunk egy magán osztály - valamilyen más osztály belső osztályaként. Egyébként, ha külső osztályt nyilvánítanánk magán, megtiltanánk más osztályoknak a hozzáférést, használhatatlanná téve:

public class PublicOuterClass {public PrivateInnerClass getInnerClassInstance () {PrivateInnerClass myPrivateClassInstance = this.new PrivateInnerClass (); myPrivateClassInstance.id = "ID1"; myPrivateClassInstance.name = "Bob"; return myPrivateClassInstance; } privát osztály PrivateInnerClass {public String name; public String id; }}

Ebben a példában létrehoztuk a magán belső osztály a miénkben PublicOuterClass megadásával magán hozzáférés módosító.

Mert mi használtuk a magán kulcsszó, ha valamilyen okból próbáld meg példázni a mi PrivateInnerClass kívülről a PublicOuterClass, a kód nem fordul össze, és meglátjuk a hibát:

A PrivateInnerClass nem bontható fel típusra

8. Következtetés

Ebben a gyors bemutatóban megvitattuk a magán hozzáférés módosító Java-ban. Ez egy jó módszer a kapszulázás elérésére, ami információk elrejtéséhez vezet. Ennek eredményeként biztosíthatjuk, hogy csak a kívánt adatokat és viselkedést tegyük ki más osztályok elé.

Mint mindig, a kódpélda elérhető a GitHubon.


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