English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Java Grundlagenanleitung

Java Flow Control

Java Array

Java objektorientiert (I)

Java objektorientiert (II)

Java objektorientiert (III)

Java Ausnahmebehandlung

Java Liste (Liste)

Java Queue (Warteschlange)

Java Map-Sammlung

Java Set-Sammlung

Java Eingabe und Ausgabe (I/O)

Java Reader/Writer

Andere Themen von Java

Java Kapselung

In diesem Tutorial werden Sie mit Beispielen lernen, wie man in Java Verpackung und Datenverteilung anwendet.

Java Kapselung

Die Verpackung ist eine wichtige Funktion der objektorientierten Programmierung. Die Verpackung bezieht sich auf das Binden von Feldern und Methoden an eine einzige Klasse.

Die Zusammenfassung ähnlicher Felder und Methoden in einer Klasse hilft auch, Daten zu verbergen.

Verpackung von Feldern und Methoden

Normalerweise ist die Verpackung der Prozess, ähnliche Code in einem Ort zu verpacken.

In Java können wir Felder und Methoden, die in einer Klasse gemeinsam verwendet werden, zusammenfassen. Zum Beispiel:

class Rectangle {
   int length;
   int breadth;
   public void getArea() {}
}

Im obigen Programm berechnet die Methode getArea() die Fläche des Rechtecks. Um die Fläche zu berechnen, benötigt sie die Länge (length) und Breite (breadth). Daher werden die Datenfelder length, breadth und die Methode getArea() in der Klasse Rectangle platziert.

Java Datenverteilung

Die Datenverteilung ist eine Methode zur Begrenzung des Zugriffs auf Datenmitglieder durch Verbergen der Implementierungsdetails.

Die Verpackung bietet auch eine Methode zur Versteckung von Daten.

Die Datenverteilung kann durch Zugriffsmodifikatoren erreicht werden. In Java gibt es vier Zugriffsmodifikatoren:

  • public - Verzierungseigenschaften oder -methoden sind öffentlich und können überall erreicht werden, die Standardwerte für alle Eigenschaften und Methoden sind public

  • private - Verzierungseigenschaften oder -methoden sind privat und können nicht außerhalb der Klasse, in der sie deklariert wurden, erreicht werden

  • protected - The attributes or methods modified by protected are protected, similar to private, the difference is that they are also accessible in subclasses

  • default - That is, without any access modifiers, it is usually called the "default access mode". Under this mode, access is allowed only within the same package.

For more information, please visitJava Modifikatoren.

Example1Use private data hiding

class Person {
   private int age;
   public int getAge() {
      return age;
   }
   public void setAge(int age) {
      this.age = age;
   }
}
class Main {
   public static void main(String[] args) {
      Person p1 = new Person();
      p1.setAge(24);
      System.out.println("My age is " + p1.getAge());
   }
}

Output result

My age is 24

In the above example, we have a private field age. Since it is private, it cannot be accessed from outside the class. To access age, we used the public methods getAge() and setAge(). These methods are called getter and setter methods.

If you try to access the age field from the Main class, an error message will appear.

p1.age = 24;     // error: age has private access in Person

Setting age to private can limit unauthorized access from outside the class. This is data hiding.

Example2Use protected data hiding

class Person {
 protected String profession;
 protected void displayInfo() {
   System.out.println("I am a " + profession);
 }
}
class Teacher extends Person {
   public static void main(String[] args) {
      Teacher t1 = new Teacher();
      t1.profession = "teacher";
      t1.displayInfo();
   }
}

Output result

I am a teacher

In the above program, we created a Person class that contains a protected field profession and a protected method displayInfo().

We have accessed these members from the Teacher class (a subclass of Person).

Why encapsulation?

  • In Java, encapsulation helps us keep related fields and methods together, making our code cleaner and easier to read.

  • Es hilft, die Änderungen an unseren Datenfeldern zu kontrollieren. Überlegen Sie sich eine Situation, in der wir möchten, dass das Feld age der Klasse nicht negativ ist. Hier können wir age als privat setzen und die Logik im setAge()-Methodenaufruf anwenden. Zum Beispiel:

class Person {
   private int age;
   public void setAge(int age) {
     if (age >= 0) {
        this.age = age;
     }
   }
}
  • Getter- und Setter-Methode bieten unseren Klassenfeldern nur lesenden oder schreibenden Zugriff. Zum Beispiel:

getName()   // Nur lesenden Zugriff bereitstellen
setName()   //Nur schreibenden Zugriff bereitstellen
  • Es hilft, die Komponenten des Systems zu entkoppeln. Diese entkoppelten Komponenten können unabhängig und gleichzeitig entwickelt, getestet und debuggt werden. Und jede Änderung an einer bestimmten Komponente hat keinen Einfluss auf andere Komponenten.

Datenverbergen und Verkapselung

Man denkt oft, dass Verkapselung Datenverbergen ist, aber das ist nicht ganz korrekt.

Verkapselung bezieht sich darauf, verwandte Felder und Methoden zusammenzubinden.Dies ermöglicht es uns, Datenverbergen zu realisieren.Verkapselung selbst ist nicht Datenverbergen.