Kl

Klassen in Java

12 Übungen

Über Klassen

Das grundlegende objektorientierte Konstrukt in Java ist die Klasse. Sie kombiniert Daten (Felder), auch Instanzvariablen genannt, mit Verhalten (Methoden). Die Felder und Methoden einer Klasse bezeichnet man als ihre Mitglieder.

Der Zugriff auf Mitglieder lässt sich über Zugriffsmodifizierer steuern. Die zwei häufigsten sind:

  • public: Auf das Mitglied kann jeder Code zugreifen (keine Einschränkungen).
  • private: Auf das Mitglied kann nur Code in derselben Klasse zugreifen.

Wenn in Java kein Zugriffsmodifizierer angegeben wird, gilt standardmäßig die Paketsichtbarkeit. Dann ist das Mitglied für alle Klassen sichtbar, die im selben Paket definiert sind.

Dieses Zusammenfassen zusammengehöriger Daten und Verhaltensweisen und das Einschränken des Zugriffs auf Mitglieder nennt man Kapselung. Sie ist eines der Kernkonzepte der Objektorientierung.

Du kannst dir eine Klasse als Vorlage für das Erzeugen von Instanzen dieser Klasse vorstellen. Um eine Instanz einer Klasse zu erzeugen (auch Objekt genannt), verwendest du das new-Schlüsselwort:

class Car {
}

// Create two car instances
Car myCar = new Car();
Car yourCar = new Car();

Felder haben einen Typ und einen Namen (in camelCase geschrieben) und können überall in einer Klasse definiert werden (in PascalCase geschrieben).

class Car {
    // Accessible by anyone
    public int weight;

    // Only accessible by code in this class
    private String color;
}

Du kannst einem Feld optional einen Anfangswert zuweisen. Wenn ein Feld keinen Anfangswert angibt, wird es auf den Standardwert seines Typs gesetzt. Die Feldwerte einer Instanz kannst du mit der Punktnotation lesen und ändern.

class Car {
    // Will be set to specified value
    public int weight = 2500;

    // Will be set to default value (0)
    public int year;
}

Car newCar = new Car();
newCar.weight; // => 2500
newCar.year;   // => 0

// Update value of the field
newCar.year = 2018;

Private Felder werden meist als Nebeneffekt eines Methodenaufrufs aktualisiert. Solche Methoden geben üblicherweise keinen Wert zurück; in diesem Fall sollte der Rückgabetyp void sein:

class CarImporter {
    private int carsImported;

    public void importCars(int numberOfCars)
    {
        // Update private field
        carsImported = carsImported + numberOfCars;
    }
}

Beachte, dass es in Java-Klassen unüblich ist, öffentliche Felder zu verwenden. Üblicherweise nutzt man private Felder, auf die man über Getter und Setter zugreift.

Innerhalb einer Klasse verweist das this-Schlüsselwort auf die aktuelle Klasse. Das ist besonders nützlich, wenn ein Parameter denselben Namen wie ein Feld hat:

class CarImporter {
    private int carsImported;

    public void setImportedCars(int carsImported)
    {
        // Update private field from public method
        this.carsImported = carsImported;
    }
}
Über GitHub bearbeiten Der Link öffnet sich in einem neuen Fenster oder Tab

Lerne Klassen