Kursinhalt
Java Erweitert
Java Erweitert
Getter und Setter
Die beste Methode, den privaten Zugriffsmodifizierer zu umgehen
Alle Java-Programmierer verwenden Konstrukte, die als Getter und Setter bezeichnet werden.
Getter und Setter sind Methoden, die einem bestimmten Muster folgen. Sie dienen dazu, den private
Zugriffsmodifizierer zu umgehen und Felder aus einer anderen Klasse effektiv zu manipulieren.
Was machen Getter und Setter?
Einfach ausgedrückt ermöglicht der Setter das Zuweisen eines Wertes zu einem bestimmten Feld, das durch den privaten Zugriffsmodifizierer geschützt ist, während der Getter das Abrufen des Wertes aus einem durch den privaten Zugriffsmodifizierer geschützten Feld erlaubt.
Die Syntax für einen Getter und einen Setter:
Main.java
// getter public fieldType getFieldName() { return field; } // setter public void setFieldName(fieldType field) { this.field = field; }
Wie im obigen Code zu sehen ist, verwenden wir die Namenskonvention für die Methoden getFieldName()
und setFieldName()
. Wenn wir also ein Feld private String name
haben und einen Getter und einen Setter mit den Namen getName()
bzw. setName()
erstellen, gilt Folgendes: Es ist ebenfalls zu beachten, dass der Getter einen Wert vom gleichen Typ wie das Feld name
zurückgibt, während der Setter einen Parameter vom gleichen Typ wie das Feld name
entgegennimmt.
Dies ermöglicht uns den Zugriff auf Felder, die durch den private
Zugriffsmodifizierer geschützt sind.
Betrachten wir ein Beispiel für den Zugriff auf ein privates Feld aus der Klasse Person
in der main
-Klasse:
Main.java
package com.example; public class Main { public static void main(String[] args) { Person bob = new Person(); bob.setName("Bob"); System.out.println(bob.getName()); } } class Person { private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } }
Wie Sie sehen, verwenden wir den Setter, um einen Wert für das Feld name
festzulegen, und anschließend den Getter, um den Wert des Feldes name
auf dem Bildschirm anzuzeigen. Achten Sie auf die Syntax von Getter und Setter sowie darauf, dass das Feld name
in der Klasse Person
durch den Zugriffsmodifizierer private
geschützt ist.
Konstruktor vs Getter/Setter
Was ist besser zu verwenden: Initialisierung über einen Konstruktor + Überschreiben der Methode toString()
, oder die Verwendung von Gettern und Settern?
Es ist auf jeden Fall besser, Getter und Setter zu verwenden, um auf Felder zuzugreifen, die durch den Zugriffsmodifizierer private
geschützt sind. Dies bietet eine größere Flexibilität im Code und verbessert dessen Lesbarkeit. Wenn Sie die Methode getName()
im Code sehen, ist sofort klar, dass diese Methode das Feld mit dem Namen name
abruft. Dasselbe gilt, wenn Sie die Methode setName()
sehen: Es ist sofort ersichtlich, dass Sie einem Feld für das Objekt der jeweiligen Klasse einen bestimmten Wert zuweisen. Wenn andere Personen Ihren Code lesen, werden sie sich über die Verwendung von Gettern und Settern freuen.
Es ist außerdem zu beachten, dass jedes Feld einen eigenen Getter und Setter benötigt. Wenn eine Klasse zwei Felder hat, die durch den Zugriffsmodifizierer private
geschützt sind, sollte die Klasse für jedes Feld einen Getter haben, also insgesamt zwei Getter und zwei Setter.
Sehen wir uns ein Beispiel an, bei dem wir der Klasse age
ein Feld Person
hinzufügen:
Main.java
package com.example; public class Main { public static void main(String[] args) { Person bob = new Person(); bob.setName("Bob"); bob.setAge(27); System.out.println("Person's name: " + bob.getName() + ", Person's age: " + bob.getAge()); } } class Person { private String name; private int age; public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } }
Wie Sie sehen, haben wir für jedes Feld der Klasse Person
einen Getter und einen Setter erstellt. In der main
-Methode wurden die Felder mithilfe des Setters initialisiert und ihre Werte mit dem Getter auf dem Bildschirm angezeigt. Die Verwendung dieser Methoden ist sehr praktisch, und Sie werden sie in Zukunft häufig verwenden.
1. Was ist der Zweck der Verwendung von Gettern und Settern?
2. Wie sieht die Syntax einer Getter-Methode in Java aus?
3. Wie lautet die Syntax einer Setter-Methode in Java?
Danke für Ihr Feedback!