Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Hallo,
ich frage mich ab wann man get und set methoden für member erstellen sollte, da ich schon oft, z.B. in LibGDX, gesehen hab das man keine getter und setter benutzt hat sondern die member public gemacht hat.
Z.B. sehe ich das sehr oft bei einer Klasse wie Vector2.
Also eine klasse die x und y wert speichert.
Ich persöhnlich finde es viel schöner mit getter und setter aber ich würde gerne von euch hören was machen eher wann machen sollte.
Und noch eine Frage, kosten getter methoden rechenleistung ?
Grundsätzlich sollten Member oder besser Attribute einer Klasse nicht von außen zugänglich sein und insofern sie nicht schon im Konstruktor ( also bei Objekterzeugung ) initialisiert werden sollte man dies ebend über getter und setter machen , was allerdings wiederrum stellenweise in z.B Büchern wie : Der Weg zum Java Profi von M. Inden als schlechtes Klassendesign aufgefasst wird, wenn man drölfzig getter und setter Methoden hat.
angenommen du hast eine Klasse Rechnung, dann ist von vorneherein klar das die Rechnung für jemanden ausgestellt wird, so könntest du zum beispiel dies direkt im Konstruktor deklarieren
[EDIT]
Oftmals möchte man z.B ein Objekt erzeugen welches gleich schon Initialisierte Werte mit auf dem Weg bekommt, dann löst man dies über den Konstruktor , andernfalls möchte man vielleicht das Werte veränderlich sind etc. dann kann man dafür Setter erstellen
[/EDIT]
und dann lediglich einen öffentlichen getter liefern mit dem du dann z.B an den Client kommst
Java:
public String getClientName(){
return this.client.getName();
// dazu muss natürlich getName(); in Client einen String zurückliefern
Alles in allem kann ich sagen das es Situationsabhängig ist und immer drauf ankommt, was entweder gefordert wird, oder wie deine Klassen später als Framework zusammenspielen können sollen , bei dem einen nutzt du halt Setter oder Initialisierst direkt im Konstruktor.
Auf getter und setter verzichtet man in Grafischen Systemen/Bibliotheken, da man schnellen Zugang zu Variablen will.
Getter und setter benutzt man jedoch im Normalfall, wenn man den Zugang zu Variablen kontrollieren will und somit das Objekt "sicherer" machen.
Sicherer ist dabei aber relativ, denn ein getter liefert bei Objekten eine Referenz auf das Objekt zurück, wodurch man dann selbst ohne setter das Objekt manipulieren kann. (Außer bei Immutablen Objekten, wie String, welche nicht veränderbar sind)
Bei primitiven Typen ist dies jedoch nicht möglich, da man bei ihnen immer eine Kopie des Wertes zum arbeiten bekommt, wodurch man nie auf Referenzbasis arbeitet.
Bis auf wenige Ausnahmen, sollte man aber immer getter und setter verwenden, zumal dies auch Objekt orientierter ist.