Java ‘private’ toegangsmodificator

1. Overzicht

In de programmeertaal Java kunnen velden, constructors, methoden en klassen worden gemarkeerd met toegangsmodificatoren. In deze tutorial zullen we praten over de privaat toegangsmodificator in Java.

2. Het sleutelwoord

De privaat access modifier is belangrijk omdat het inkapseling en het verbergen van informatie mogelijk maakt, wat kernprincipes zijn van objectgeoriënteerd programmeren. Inkapseling is verantwoordelijk voor het bundelen van methoden en gegevens, terwijl het verbergen van informatie een gevolg is van inkapseling - het verbergt de interne representatie van een object.

Het eerste dat u moet onthouden, is dat elementen gedeclareerd als privaat alleen toegankelijk voor de klasse waarin ze zijn gedeclareerd.

3. Velden

Nu zullen we enkele eenvoudige codevoorbeelden zien om het onderwerp beter te begrijpen.

Laten we eerst een Werknemer klasse met een paar privaat instantievariabelen:

openbare klasse Medewerker {private String privateId; privé booleaanse manager; // ...}

In dit voorbeeld hebben we de privateId variabele als privaat omdat we wat logica willen toevoegen aan de id-generatie. En, zoals we kunnen zien, deden we hetzelfde met manager attribuut omdat we geen directe wijziging van dit veld willen toestaan.

4. Constructeurs

Laten we nu een privaat constructeur:

privémedewerker (String-id, String-naam, booleaanse managerAttribute) {this.name = naam; this.privateId = id + "_ID-MANAGER"; }

Door onze constructeur te markeren als privaat, kunnen we het alleen vanuit onze klas gebruiken.

Laten we een statisch methode die onze enige manier is om dit te gebruiken privaat constructor van buiten de Werknemer klasse:

openbare statische werknemer buildManager (tekenreeks-id, tekenreeksnaam) {retourneer nieuwe werknemer (id, naam, waar); }

Nu kunnen we een beheerdersinstantie krijgen van ons Werknemer les door simpelweg te schrijven:

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

En achter de schermen natuurlijk de buildManager methode roept onze privaat constructeur.

5. Methoden

Laten we nu een privaat methode voor onze klas:

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

En laten we veronderstellen dat we om de een of andere reden een willekeurige regel in ons bedrijf hebben waarin alleen een werknemer met de naam "Carl" gepromoveerd kan worden tot manager, hoewel andere klassen zich hiervan niet bewust zijn. We maken een openbaar methode met enige logica om deze regel af te handelen die onze aanroept privaat methode:

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

6. privaat in actie

Laten we een voorbeeld bekijken van hoe u onze Werknemer klas van buiten:

openbare klasse VoorbeeldClass {openbare statische leegte hoofd (String [] args) {Werknemer werknemer = nieuwe werknemer ("Bob", "ABC123"); employee.setPrivateId ("BCD234"); System.out.println (employee.getPrivateId ()); }}

Na het uitvoeren Voorbeeldklasse, we zullen de uitvoer op de console zien:

BCD234_ID

In dit voorbeeld hebben we de openbaar constructor en het openbaar methode changeId (customId) omdat we geen toegang hebben tot het privaat variabele privateId direct.

Laten we kijken wat gebeurt er als we proberen toegang te krijgen tot een privaat methode, constructor of variabele van buiten onze Werknemer klasse:

openbare klasse VoorbeeldClass {openbare statische leegte hoofd (String [] args) {Werknemer werknemer = nieuwe werknemer ("Bob", "ABC123", true); employee.setManager (true); employee.privateId = "ABC234"; }}

We krijgen compilatiefouten voor elk van onze onwettige verklaringen:

De constructor Employee (String, String, boolean) is niet zichtbaar De methode setManager (boolean) van het type Employee is niet zichtbaar Het veld Employee.privateId is niet zichtbaar

7. Klassen

Er is een speciaal geval waarin we een privaat klasse - als een innerlijke klasse van een andere klasse. Anders, als we een uiterlijke klasse als privaat, zouden we andere klassen de toegang verbieden, waardoor het nutteloos wordt:

openbare klasse PublicOuterClass {openbare PrivateInnerClass getInnerClassInstance () {PrivateInnerClass myPrivateClassInstance = this.new PrivateInnerClass (); myPrivateClassInstance.id = "ID1"; myPrivateClassInstance.name = "Bob"; retourneer myPrivateClassInstance; } private class PrivateInnerClass {public String naam; openbare tekenreeks-id; }}

In dit voorbeeld hebben we een privaat innerlijke klasse binnen ons PublicOuterClass door de privaat toegangsmodificator.

Omdat we de privaat trefwoord, als we om wat voor reden dan ook probeer onze PrivateInnerClass van buiten de PublicOuterClass, de code zal niet compileren en we zullen de fout zien:

PrivateInnerClass kan niet worden omgezet in een type

8. Conclusie

In deze korte tutorial hebben we de privaat toegangsmodificator in Java. Het is een goede manier om inkapseling te bereiken, waardoor informatie wordt verborgen. Als gevolg hiervan kunnen we ervoor zorgen dat we alleen de gegevens en het gedrag dat we willen aan andere klassen blootstellen.

Zoals altijd is het codevoorbeeld beschikbaar op GitHub.