Hallo!
Ich habe einige Variablen, die ich in mehreren Klassen benutzen will. Also benutze ich den Befehl:
Code:
klasse.variable = neueVariable;
Jetzt würde in der neuen Variable die alte gespeichert werden, es sei denn sie ist private. Jetzt habe ich aber mal gehört, dass man Variablen generell als private deklarieren sollte, und über get-Funktionen könnte man dann ihren Wert bekommen. Im Code würde das dann so aussehen:
Code:
neueVariable = klasse.getVariable();
Ist der untere Stil besser und könnte ich auch den einfach Stil oben benutzen?
der untere stil ist besser, es scheint zwar ein bisschen aufwändig für jede varialbe eine getter und setter methode zu schreiben aber wenn du zb eclipse einsetzt kannst du dir die generieren lassen "Source>Generate Getters and Setters"
Beide Male "Ja".
Der 'untere Stil' entspricht dem objektorientierten Paradigma, wird so gelehrt - und man sollte seine Felder so vor fremdem Zugriff schützen.
Der 'obere Stil' ist aber auf Grund der Einfachheit auch zu empfehlen. Wenn du Code schreibst, von dem du weißt, welche Clienten die Klassen mit den Feldern benutzen, ist public völlig in Ordnung. Man muss nicht alles verkomplizieren, wobei es in Java ja nicht mal 'richtige' getter und setter gibt (extra Methoden für diese Aufgabe).
Nein Jango, es macht sehr wohl einen Unterschied.
Erlaubst du direkten Zugriff auf die Felder der Klassen, kann das Verhalten in Subklassen nicht geändert werden.
Das ist auch der Grund warum eine Klasse selbst ihre eigenen Felder nur über getter/setter zugreifen sollte.
Bezgl. der 'echten' getter und setter, sie genauso 'echt' wie die Properties in C#.
Der 'obere Stil' ist aber auf Grund der Einfachheit auch zu empfehlen. Wenn du Code schreibst, von dem du weißt, welche Clienten die Klassen mit den Feldern benutzen, ...
... und wenn sie NIE von jemand anderem geändert werden
... und wenn NIE die Implementierung verändert werden soll
... und wenn NIE mit dem setzen/auslesen einer Variable eine bestimmte Aktion verknüpft werden soll.
... und und und
Mach' sie private. Wenn du sie nicht private machst, wirst du es vielleicht (und vielleicht sehr wahrscheinlich) irgendwann bereuen. Glaub' mir.
Kannst du auch Gründe nennen? Dass er das machen soll, wurde ja nun schon gepostet - möglicherweise reicht dem Poster aber: Mach es einfach - ist besser so - sonst bereust du es, nicht? Wenn du jemanden nach der Uhrzeit fragst und er antwortet dir: "Ja - die Uhrzeiz eben", bist du damit zufrieden?
@Wildcard: Man sagt Accessoren in C# (get- und set- accessoren) - nicht Properties.
Meine "...und"-Sätze haben ja schon die Gründe impliziert. Einige Punkte stehen ausführlicher nochmal in den FAQ http://www.java-forum.org/de/viewtopic.php?t=4354
Der letzte Punkt, den ich genannt hatte, ist da allerdings nicht erwähnt - tritt aber häufig auf, wenn z.B. beim Setzen einer Variablen IMMER irgendein Observer benachrichtigt werden muss oder so.