Menu
Coddy logo textTech

Getter- und Setter-Methoden

Teil des Abschnitts Objektorientierte Programmierung der Java-Journey von Coddy — Lektion 11 von 87.

Getter und Setter sind Methoden, die einen kontrollierten Zugriff auf private Felder ermöglichen. Ein Getter ruft den Wert eines Feldes ab, während ein Setter diesen ändert.

Die Namenskonvention folgt einem Standardmuster: Präfix get oder set, gefolgt vom Feldnamen, dessen erster Buchstabe großgeschrieben wird.

public class Product {
    private String name;
    private double price;
    
    // Getter für name
    public String getName() {
        return name;
    }
    
    // Setter für name
    public void setName(String name) {
        this.name = name;
    }
    
    // Getter für price
    public double getPrice() {
        return price;
    }
    
    // Setter mit Validierung
    public void setPrice(double price) {
        if (price >= 0) {
            this.price = price;
        }
    }
}

Die wahre Stärke von Settern liegt in der Möglichkeit, Validierungslogik hinzuzufügen. Im obigen Beispiel akzeptiert setPrice nur nicht-negative Werte und schützt das Objekt so vor ungültigen Daten.

Für boolean Felder verwenden Getter normalerweise das Präfix is anstelle von get:

private boolean active;

public boolean isActive() {
    return active;
}

Sie können auch schreibgeschützte Felder erstellen, indem Sie nur einen Getter bereitstellen, oder nur beschreibbare Felder, indem Sie nur einen Setter bereitstellen. Dies gibt Ihnen eine feingranulare Kontrolle darüber, wie externer Code mit den Daten Ihres Objekts interagiert.

challenge icon

Aufgabe

Einfach

Lassen Sie uns einen Temperature-Konverter bauen, der die Leistungsfähigkeit von Gettern und Settern mit Validierungslogik demonstriert.

Sie werden zwei Dateien erstellen, um Ihren Code zu organisieren:

  • Temperature.java: Definieren Sie eine Temperature-Klasse, die einen Temperaturwert in Celsius speichert. Die Klasse sollte Folgendes enthalten:
    • Ein privates celsius-Feld (double)
    • Ein privates valid-Feld (boolean), das verfolgt, ob die Temperatur physikalisch möglich ist
    • Einen Getter getCelsius(), der den celsius-Wert zurückgibt
    • Einen Setter setCelsius(), der nur Werte bei oder über dem absoluten Nullpunkt (-273.15) akzeptiert. Wenn der Wert gültig ist, setzen Sie valid auf true; andernfalls ändern Sie celsius nicht und setzen Sie valid auf false
    • Einen Getter isValid() für das boolean-Feld (denken Sie daran: boolean-Getter verwenden das Präfix is)
    • Einen Getter getFahrenheit(), der die Temperatur in Fahrenheit umrechnet und zurückgibt, unter Verwendung der Formel: (celsius * 9/5) + 32
  • Main.java: Erstellen Sie ein Temperature-Objekt, lesen Sie einen celsius-Wert als Eingabe ein, verwenden Sie den Setter, um ihn zu setzen, und geben Sie dann aus, ob die Temperatur gültig ist und was ihr Fahrenheit-Äquivalent ist. Formatieren Sie Ihre Ausgabe in zwei Zeilen:
    • Valid: true oder Valid: false
    • Fahrenheit: X.X (mit einer Dezimalstelle)

Sie erhalten eine Eingabe: einen double-Wert, der eine Temperatur in Celsius darstellt.

Um die Fahrenheit-Ausgabe auf eine Dezimalstelle zu formatieren, können Sie String.format("%.1f", value) verwenden.

Spickzettel

Getter und Setter sind Methoden, die einen kontrollierten Zugriff auf private Felder ermöglichen. Ein Getter ruft den Wert eines Feldes ab, während ein Setter diesen ändert.

Die Namenskonvention folgt einem Standardmuster: das Präfix get oder set gefolgt vom Feldnamen, dessen erster Buchstabe großgeschrieben wird.

public class Product {
    private String name;
    private double price;
    
    // Getter für name
    public String getName() {
        return name;
    }
    
    // Setter für name
    public void setName(String name) {
        this.name = name;
    }
    
    // Getter für price
    public double getPrice() {
        return price;
    }
    
    // Setter mit Validierung
    public void setPrice(double price) {
        if (price >= 0) {
            this.price = price;
        }
    }
}

Setter können Validierungslogik enthalten, um Objekte vor ungültigen Daten zu schützen. Im obigen Beispiel akzeptiert setPrice nur nicht-negative Werte.

Für boolean-Felder verwenden Getter das Präfix is anstelle von get:

private boolean active;

public boolean isActive() {
    return active;
}

Sie können schreibgeschützte Felder erstellen, indem Sie nur einen Getter bereitstellen, oder nur beschreibbare Felder, indem Sie nur einen Setter bereitstellen.

Probier es selbst

import java.util.Scanner;

class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        double celsiusInput = scanner.nextDouble();
        
        // TODO: Erstelle ein Temperature-Objekt
        
        // TODO: Verwende den Setter, um den celsius-Wert zu setzen
        
        // TODO: Gib aus, ob die Temperatur gültig ist (Format: "Valid: true" oder "Valid: false")
        
        // TODO: Gib den entsprechenden Fahrenheit-Wert aus (Format: "Fahrenheit: X.X")
        // Hinweis: Verwende String.format("%.1f", value) für eine Dezimalstelle
    }
}
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Objektorientierte Programmierung