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 privatevariabelen 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 getmethode retourneert de variabelewaarde en de setmethode stelt de waarde in.

Syntaxis voor beide is dat ze beginnen met getof 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 getmethode retourneert de waarde van de variabele name.

De setmethode neemt een parameter ( newName) en wijst deze toe aan de namevariabele. Het thissleutelwoord wordt gebruikt om naar het huidige object te verwijzen.

Omdat de namevariabele 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 privatevariabele, 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 getmethode gebruikt) of alleen schrijven (als u alleen de setmethode gebruikt)
  • Flexibel: de programmeur kan een deel van de code wijzigen zonder andere delen te beïnvloeden
  • Verhoogde beveiliging van gegevens