Getter- und Setter-Methoden
Teil des Abschnitts Objektorientierte Programmierung der Java-Journey von Coddy. Lektion 11 von 87.
Getter und Setter sind Methoden, die kontrollierten Zugriff auf private Felder ermöglichen. Ein Getter ruft den Wert eines Feldes ab, während ein Setter ihn ä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.
Aufgabe
EinfachLass uns einen Temperature-Konverter erstellen, der die Leistungsfähigkeit von Gettern und Settern mit Validierungslogik demonstriert.
Du wirst zwei Dateien erstellen, um deinen Code zu organisieren:
Temperature.java: Definiere 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 ab dem absoluten Nullpunkt (-273.15) akzeptiert. Wenn der Wert gültig ist, setzevalidauf true; andernfalls ändere celsius nicht und setzevalidauf false - Einen Getter
isValid()für das boolesche Feld (denke daran: Boolesche Getter verwenden das Präfixis) - Einen Getter
getFahrenheit(), der die Temperatur mithilfe der Formel(celsius * 9/5) + 32in Fahrenheit umrechnet und zurückgibt
- Ein privates
Main.java: Erstelle ein Temperature-Objekt, lies einen Celsius-Wert als Eingabe ein, verwende den Setter, um ihn zu setzen, und gib anschließend aus, ob die Temperatur gültig ist, sowie ihr Fahrenheit-Äquivalent. Formatiere deine Ausgabe als zwei Zeilen:Valid: trueoderValid: falseFahrenheit: X.X(mit einer Dezimalstelle)
Du erhältst eine Eingabe: einen double-Wert, der eine Temperatur in Celsius darstellt.
Um die Fahrenheit-Ausgabe auf eine Dezimalstelle zu formatieren, kannst du String.format("%.1f", value) verwenden.
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
}
}
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Objektorientierte Programmierung
1Grundlagen der OOP
Externe DateienEinführung in die OOPKlassen vs. ObjekteDas Schlüsselwort thisMethodenFelder (Attribute)KonstruktormethodeÜberladen von KonstruktorenRückblick – Einfacher Taschenrechner4Vererbung
Grundlegende Vererbung (extends)Das Schlüsselwort superÜberschreiben von Methoden (@Override)KonstruktorverkettungDie Object-KlasseEinfach- und mehrstufige VererbungWarum keine Mehrfachvererbung von KlassenRückblick – Mitarbeiterhierarchie7Spezielle Methoden & Object-Klasse
toString()-Methodeequals() und hashCode()clone()-MethodecompareTo() und ComparableComparator-SchnittstelleRückblick – Benutzerdefinierte Sortierung2Zugriffsmodifikatoren & Kapselung
Übersicht der ZugriffsebenenGetter- und Setter-MethodenInformationsverbergungDas Schlüsselwort finalRückblick – Bankkontoverwaltung5Polymorphismus
Grundlagen der MethodenüberladungMethodenüberschreibung (Laufzeit)Upcasting und DowncastingDer instanceof-OperatorAbstrakte Klassen und MethodenRückblick – Formrechner8Fortgeschrittene OOP-Konzepte
Komposition vs. VererbungAggregation vs. KompositionInnere, verschachtelte & anonyme KlassenEnums und Enum-MethodenRecords (Java 16+)Versiegelte Klassen (Java 17+)11Entwurfsmuster Teil 1
Einführung in EntwurfsmusterSingleton-MusterFactory-MusterBuilder-MusterObserver-MusterStrategie-Muster14Abschließende Herausforderungen
E-Learning-PlattformBankingsystemEntwicklung einer SpielfigurFahrzeugvermietungsdienst3Klassen-Props & statische Member
Instanz- vs. statische VariablenStatische MethodenStatische BlöckeKonstanten (static final)Wiederholung – Counter & Utility6Schnittstellen & abstrakte Klassen
Einführung in InterfacesInterfaces implementierenMehrere Interfaces implementierenDefault & Static in InterfacesAbstrakte Klassen vs. InterfacesFunktionale InterfacesRückblick – ZahlungssystemÜbe selbstständig: Online-Java-Compiler