Java -inkapseling
inkapseling
De betekenis van Encapsulation is ervoor te zorgen dat "gevoelige" gegevens voor gebruikers verborgen blijven. Om dit te bereiken, moet u:
- declareer klassevariabelen/attributen als
private
- openbare get
en set -methoden bieden om toegang te krijgen tot de waarde van een
private
variabele en deze bij te werken
Ophalen en instellen
Je hebt uit het vorige hoofdstuk geleerd dat private
variabelen alleen toegankelijk zijn binnen dezelfde klasse (een externe klasse heeft er geen toegang toe). Het is echter mogelijk om ze te openen als we openbare methoden voor ophalen en instellen bieden .
De get
methode retourneert de variabelewaarde en de set
methode stelt de waarde in.
Syntaxis voor beide is dat ze beginnen met get
of set
, gevolgd door de naam van de variabele, met de eerste letter in hoofdletters:
Voorbeeld
public class Person {
private String name; // private = restricted access
// Getter
public String getName() {
return name;
}
// Setter
public void setName(String newName) {
this.name = newName;
}
}
Voorbeeld uitgelegd
De get
methode retourneert de waarde van de variabele name
.
De set
methode neemt een parameter ( newName
) en wijst deze toe aan de
name
variabele. Het this
sleutelwoord wordt gebruikt om naar het huidige object te verwijzen.
Omdat de name
variabele echter is gedeclareerd als private
, hebben we
er geen toegang toe van buiten deze klasse:
Voorbeeld
public class Main {
public static void main(String[] args) {
Person myObj = new Person();
myObj.name = "John"; // error
System.out.println(myObj.name); // error
}
}
Als de variabele werd gedeclareerd als public
, zouden we de volgende uitvoer verwachten:
John
Als we echter proberen toegang te krijgen tot een private
variabele, krijgen we een foutmelding:
MyClass.java:4: error: name has private access in Person
myObj.name = "John";
^
MyClass.java:5: error: name has private access in Person
System.out.println(myObj.name);
^
2 errors
In plaats daarvan gebruiken we de methoden getName()
en setName()
om de variabele te openen en bij te werken:
Voorbeeld
public class Main {
public static void main(String[] args) {
Person myObj = new Person();
myObj.setName("John"); // Set the value of the name variable to "John"
System.out.println(myObj.getName());
}
}
// Outputs "John"
Waarom inkapseling?
- Betere controle over klasseattributen en -methoden
- Klasseattributen kunnen alleen -lezen worden gemaakt (als u alleen de
get
methode gebruikt) of alleen schrijven (als u alleen deset
methode gebruikt) - Flexibel: de programmeur kan een deel van de code wijzigen zonder andere delen te beïnvloeden
- Verhoogde beveiliging van gegevens