Java Setter?
Ich weiß wozu wir ein Getter benutzen, aber warum benutzen wir ein Setter überhaupt wir wollen doch verhindern das man das Attribut verändern kann? Aber mit dem Setter kann man es ja verändern versteht ihr?
4 Antworten
Ja, wenn du verhindern willst, dass das Attribut nachträglich verändert werden kann, dann lass den Setter weg (und mach das Attribut am besten objektintern auch gleich final). Ein Setter bei unveränderlichen Attributen macht tatächlich wenig Sinn.
Nein! Du willst verhindern, dass der Wert von außen manipuliert wird, ohne dass eine Schnittstelle dafür existiert, un Seiteneffekte zu verhindern. Außerdem soll versteckt werden, was die Setter genau macht. Der Schnittstellenbenutzer soll nichts darüber wissen bzw. sich keine Gedanken darüber machen.
Die Idee in der OOP ist, dass Objekte nur mittels Methodenaufrufen kommunizieren. Es sollte also niemals ein Objekt ein Feld eines anderen Objektes einfach so lesen oder schreiben können. Deswegen versteckt man das hinter einer Methode.
Man will das nicht verhindern, sondern kapseln. Das Attribut soll nur an einer zentralen Stelle direkt geändert werden können.
Was hat das jetzt mit der konkreten Frage zu tun? Darum wurden also Setter entworfen, damit man manchal Attribute nur final setzt. Interessanter Einwand.
Was hat das jetzt mit der konkreten Frage zu tun?
Es ist eine konkrete Antwort darauf, was sonst?
Darum wurden also Setter entworfen, damit man manchal Attribute nur final setzt. Interessanter Einwand.
Nein, bei von vornherein als unveränderlich entworfenen Attributen brauchst du schlichtweg keinen Setter. Setter machen (wie der Name ja schon impliziert) nur SInn für Attribute die man nachträglich setzen kann/will. Und der Sonderfall "Basisklasse definiert einen Setter, aber die abgeleitete Klasse soll setzen verhindern" stand hier (noch) nicht im Raum, nur vorsorglich, falls du jetzt mit sowas ankommst.
ich habe nie behauptet, dass man zwingend Setter benötigt. Dir scheint es an Leseverständnis zu mangeln.
Nein, ich war lediglich auf deinen Strohmann
Darum wurden also Setter entworfen, damit man manchal Attribute nur final setzt. Interessanter Einwand.
eingegangen, was sich mal wieder als Fehler herausgestellt hat, da es dir scheinbar eh nicht um eine sachliche Diskussion geht. Geh am besten weiter spielen, und überlasse sowas lieber Leuten die tatsächlich ihr Geld damit verdienen, und das nicht nur in ihr Profil hier schreiben ;)
Falsch. Es ist ein üblicher und in der Praxis sogar recht häufiger Fall, dass Objekte einzelne (oder gar alle, Stichwort Value Object) Attribute haben die bei der Erzeugung des Objekts genau einmal gesetzt werden und für den Rest der Lebenszeit des Objekts unverändert bleiben, und bei denen nachträgliche Änderungen komplett unerwünscht wären.
Sowas sollte man als beruflicher "Java-Entwickler von Batch- und Webanwendungen" eigentlich wissen ...