Java ‘privatni’ Modifikator pristupa

1. Pregled

U programskom jeziku Java polja, konstruktori, metode i klase mogu se označiti modifikatorima pristupa. U ovom uputstvu razgovarat ćemo o privatni modifikator pristupa u Javi.

2. Ključna riječ

The privatni modifikator pristupa važan je jer omogućuje enkapsulaciju i skrivanje informacija, što su temeljni principi objektno orijentiranog programiranja. Enkapsulacija je odgovorna za grupiranje metoda i podataka, dok je skrivanje informacija posljedica enkapsulacije - skriva unutarnji prikaz objekta.

Prvo čega se treba sjetiti je to elementi deklarirani kao privatni može im pristupiti samo klasa u kojoj su deklarirani.

3. Polja

Sada ćemo vidjeti nekoliko jednostavnih primjera koda za bolje razumijevanje predmeta.

Prvo, izradimo Zaposlenik razred koji sadrži nekoliko privatni varijable instance:

public class Employee {private String privateId; privatni logički upravitelj; // ...}

U ovom smo primjeru označili privateId varijabla kao privatni jer želimo dodati malo logike generaciji id-a. I, kao što vidimo, učinili smo istu stvar s menadžer atribut jer ne želimo dopustiti izravnu izmjenu ovog polja.

4. Konstruktori

Stvorimo sada privatni konstruktor:

privatni zaposlenik (ID niza, ime niza, logički managerAttribute) {this.name = name; this.privateId = id + "_ID-MANAGER"; }

Označavanjem našeg konstruktora kao privatni, možemo ga koristiti samo unutar našeg razreda.

Dodajmo a statički metoda koja će biti naš jedini način da to koristimo privatni konstruktor izvan Zaposlenik razred:

javni statički Employee buildManager (ID niza, ime niza) {return new Employee (id, name, true); }

Sada možemo dobiti upraviteljsku instancu našeg Zaposlenik razred jednostavnim pisanjem:

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

A iza kulisa, naravno, buildManager metoda poziva naš privatni konstruktor.

5. Metode

Dodajmo sada a privatni metoda za naš razred:

private void setManager (logički upravitelj) {this.manager = manager; }

I pretpostavimo, iz nekog razloga, u našoj tvrtki imamo proizvoljno pravilo u kojem samo zaposlenik po imenu "Carl" može biti unaprijeđen u menadžera, iako drugi razredi toga nisu svjesni. Stvorit ćemo a javnost metoda s nešto logike za rukovanje ovim pravilom koje poziva naše privatni metoda:

javna praznina elevateToManager () {if ("Carl" .equals (this.name)) {setManager (true); }}

6. privatni na djelu

Pogledajmo primjer kako koristiti naš Zaposlenik razred izvana:

javna klasa ExampleClass {public static void main (String [] args) {zaposlenik zaposlenik = novi zaposlenik ("Bob", "ABC123"); worker.setPrivateId ("BCD234"); System.out.println (zaposlenik.getPrivateId ()); }}

Nakon izvršenja ExampleClass, vidjet ćemo njegov izlaz na konzoli:

BCD234_ID

U ovom smo primjeru koristili javnost konstruktor i javnost metoda changeId (customId) jer ne možemo pristupiti privatni varijabilna privateId direktno.

Da vidimo što se događa ako pokušamo pristupiti a privatni metoda, konstruktor ili varijabla izvan našeg Zaposlenik razred:

javna klasa ExampleClass {public static void main (String [] args) {zaposlenik zaposlenik = novi zaposlenik ("Bob", "ABC123", true); worker.setManager (istina); zaposlenik.privateId = "ABC234"; }}

Dobit ćemo pogreške u kompilaciji za svaku našu ilegalnu izjavu:

Konstruktor Employee (String, String, boolean) nije vidljiv Metoda setManager (boolean) iz tipa Employee nije vidljiva Polje Employee.privateId nije vidljivo

7. Nastava

Tamo je jedan poseban slučaj u kojem možemo stvoriti privatni razred - kao unutarnja klasa neke druge klase. Inače, ako bismo vanjsku klasu proglasili kao privatni, zabranili bismo drugim razredima pristup, čineći ga beskorisnim:

javna klasa PublicOuterClass {public PrivateInnerClass getInnerClassInstance () {PrivateInnerClass myPrivateClassInstance = this.new PrivateInnerClass (); myPrivateClassInstance.id = "ID1"; myPrivateClassInstance.name = "Bob"; vrati myPrivateClassInstance; } privatna klasa PrivateInnerClass {naziv javnog niza; ID javnog niza; }}

U ovom smo primjeru stvorili privatni unutarnja klasa unutar naše PublicOuterClass navodeći privatni modifikator pristupa.

Jer smo koristili privatni ključna riječ, ako iz nekog razloga, pokušajte instancirati naš PrivateInnerClass izvana PublicOuterClass, kod se neće prevesti i vidjet ćemo pogrešku:

PrivateInnerClass ne može se razvrstati u vrstu

8. Zaključak

U ovom brzom vodiču razgovarali smo o privatni modifikator pristupa u Javi. To je dobar način za postizanje inkapsulacije, što dovodi do skrivanja podataka. Kao rezultat toga, možemo osigurati da ostalim klasama izlažemo samo podatke i ponašanja koja želimo.

Kao i uvijek, primjer koda dostupan je na GitHub-u.


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