Was ist der Unterschied zwischen Konstruktoren und Getter und Setter Methoden in Java?

4 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Der Konstruktor (für Instanzen) wird beim Erstellen eines Objekts benötigt und ausgeführt. Setter-und Getter-Methoden hingegen sind, sofern instanzgebunden, erst nach Erstellen des Objekts verfügbar und dann mehrmals für das Objekt aufrufbar. Des Weiteren hat ein Konstruktor keinen Rückgabetyp und kann seinen / einen seiner Basiskonstruktor/en oder einen anderen Konstruktor, der in der Klasse definiert ist, aufrufen.

Hallo Nichtsnutz12,

diese Methoden dienen zur Abstraktion und als Interface einer Klasse (und damit ihren Instanzen).

Im Kunstruktor stellst Du eine Instanz vorher so ein, wie Du sie brauchst - ohne dass die Instanz bereits benutzt worden ist. Umgekehrt löst Du im Destruktor das wieder auf - gerade, wenn von der Instanz noch andere abhängen und über die Instanz selbst von deren Auflösung erfahren müssen.

Mit einem Setter belegst Attribute, mit einem Getter lässt Du sie Dir angeben. Diese Methoden sind in aller Regel sehr einfach - können als Getter aber Attribute verknüpfen, um weitere spezifische Aussagen zu bekommen (gerade, wenn ein Interface noch zu erfüllen ist).

Überlege Dir immer eine gute Software-Architektur, die dann im Weiteren für die richtigen Methoden einer Klasse Anlass gibt.

Mit vielen lieben Grüßen
EarthCitizen

Hallo Nichtsnutz12,

da Du Anfänger bist, lass dir nicht so viel Fachchinesisch um die Ohren hauen, das lernt man früh genug und erschwert nur den Einstieg.

Ein Konstruktor dient zum initialisieren deines Objekts. Damit hat das jeweilige Objekt seine "Grundwerte" gesetzt.

Getter sind dafür zuständig Informationen aus einem Objekt zu ziehen und sollten den Zustand des Objekts im Idealfall nie verändern.

Setter sind dafür zuständig ein Objekt zu manipulieren/verändern.

Machen wir ein kleines Beispiel:

public class Person {
    private String firstname;
    private String surname;
    private Address address;
    
    public Person(String firstname, String surname){
        this.firstname = firstname;
        this.surname = surname;
    }

    public String getFirstname() {
        return firstname;
    }

    public String getSurname() {
        return surname;
    }

    public String getFullName() {
        return firstname+" "+surname;
    } 

    public Address getAddress() {
        return address;
    }

    public void setAdress(Address adress) {
        this.address = address;
    }
}

Der Konstruktor wird nun so aufgerufen:

Person person = new Person("Hanz", "Mustermann");

Wie man sieht werden "firstname" und "surname" initialisiert, "address" jedoch nicht. Damit wird beim Aufruf von "getAddress" zunächst "null" zurückgeben.

Die "address" kann nur über den Setter "setAdress" gesetzt und verändert werden. "firstname" und "surname" können nach Nutzung des Konstruktors nicht mehr verändert werden, da hierfür keine Setter vorhanden sind.

Über die vorhandenen Getter können alle möglichen Informationen über ein Person-Objekt abgerufen werden. Eine Besonderheit ist dabei der Getter "getFullName" da dieser kein Attribut des Objekts direkt zurückgibt, sondern den FullName aus "firstname" und "surname" zusammensetzt.

Gruß

Den Konstruktor kannst du nur einmal aufrufen, Getter/Setter gehen immer.