Erste Schritte Verständnisfrage: Getter und Setter Methoden

Thoosequa

Mitglied
Hallo Leute!

Nach viel zu langer Zeit und stümperhaftem coding in der Bukkit API bin ich wieder auf den rechten Pfaden wandelnd zu "Java von Kopf bis Fuß zurückgekommen". Schon einige Kapitel weiter aber trotzdem noch ein Fragezeichen sind für mich Setter und Getter Methoden. Ich weiß zwar wie ich solceh Getter und Setter Methoden in meinen Code implementieren würde, mir fehlt aber aus irgendeinem Grund vollkommen das Hintergrundwissen warum ich meine Variablen durch Setter und Getter "schützen" soll.

Kann mir vielleicht jemand weiterhelfen und in einfachen Worten erklären was Getter und Setter sind und inwiefern sie für meinen Code wichtig sind?

Gruß, thoose
 
T

troll

Gast
das hat zwei hauptgründe

1) der scope sollte immer so klein wie möglich gehalten werden
2) getter und setter waren die konsistenz der datenstruktur ...
z.b. kann es wichtig sein das eine variable in abhängigkeit zu einer anderen mit geändert werden muss .. diese aufgabe wird im setter erledigt ...
wenn man die variable direkt ändern würde würde die andere unter umständen nicht mitgeändert werden was zu fehlern führen würde ...

das ganze nennt man auch datenkapselung ...
für ihre variablen sollte eine klasse immer nur selbst verantwortlich sein ... direkte äußerungen von außen (wie z.b. beim GridBagLayout) sollten vermieden werden ...
 
V

vanny

Gast
naja du hältst deine Variablen(Member) private, so dass nur die Klasse selbst direkt auf diese zugreifen kann.
Der Vorteil ist, dass du von aussen nur per Methode um einen Wert oder dessen Änderung bitten kannst und somit keine flaschen Handhabungen mit deinen Klassendaten möglich sind.
Diese nennt man halt Getter und Setter.

Beispiel.:
Du hast eine Klasse "PlanZiel", in der ein Datum "termin" als Membervariable existiert, die beschreibt, wann der Vorgang planmäßig beendet werden soll.
Dann kannst du mit einer setMethode prüfen, ob das Datum wirklich in der Zukunft liegt, denn nur das macht Sinn.
Wenn du das nicht machst und den direkten Zugriff von aussen erlaubst, kann es sein, das das nächste Planziel für Vorgestern geplant ist ^^

Gruß Vanny
 

Ark

Top Contributor
Es gibt noch einen Grund, der bisher nicht genannt wurde: Du kannst mit solchen Methoden die Implementierung verstecken.

Beispiel: Du stellst fest, dass die 18 einzelne booleans in deinem Objekt zu viel Speicher belegen und willst deshalb die entsprechenden Werte auf die Bits dreier bytes abbilden. Wenn du mit Gettern den Zugriff auf die Felder regelst, kannst du diese Änderung gefahrlos durchführen: Die Aufrufer der Getter bekommen davon nichts mit, da die Getter nach wie vor booleans zurückgeben. Intern müssen die Getter natürlich dann etwas mehr rechnen, aber das, wie gesagt, sieht man dann von außerhalb nicht.

Würdest du an dieser Stelle stattdessen den direkten Zugriff auf die boolean-Felder erlauben, kann es passieren, dass alle anderen Klassen, die auf diese Felder zugreifen, plötzlich nicht mehr funktionieren, sobald du da was zu ändern versuchst. In dieser Situation hättest du grob nur noch zwei Möglichkeiten: Du lässt alles beim Alten (d.h., du kannst deinen Code nicht mehr optimieren) oder du ziehst deine Änderung doch durch (und alle anderen Klassen sind auf einmal kaputt). Beide Alternativen sind schlecht.

BTW: Ich habe so gut wie nie Setter in meinem Code, und nahezu alle Felder/Variablen/Klassen sind final. Das hilft wirklich sehr dabei, Code wartbar zu halten.

Es ist auch vollkommen (also gut, nicht ganz, aber fast vollkommen) nutzlos, Felder private zu machen, dann aber doch für alle Felder öffentliche Getter und Setter bereitzustellen, die alles ungefiltert akzeptieren.

Anstatt also bei Eclipse auf die automatische Generierung von Settern und Gettern zu setzen, nur um dann zu überlegen, wie man vor allem die Setter richtig "absichert", sollte man besser gleich davon absehen, überhaupt das Ändern von Feldern zuzulassen.

Ark
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
T Verständnisfrage Objekt Getter Setter Java Basics - Anfänger-Themen 102
M Java Iterator Verständnisfrage Java Basics - Anfänger-Themen 6
A Verständnisfrage Java Basics - Anfänger-Themen 12
M Verständnisfrage: Warum wird die Datei ohne Inhalt übertragen Java Basics - Anfänger-Themen 3
P Verständnisfrage: PageFactory.initElements Java Basics - Anfänger-Themen 2
R do while Schleife Verständnisfrage Java Basics - Anfänger-Themen 2
G while.next() Verständnisfrage Java Basics - Anfänger-Themen 16
Vivien Kurze Verständnisfrage zu Java Point aus java.awt.* Java Basics - Anfänger-Themen 5
C Erste Schritte Anfänger Verständnisfrage zum Compiler Java Basics - Anfänger-Themen 31
K Verständnisfrage Server/Client BufferedReader, PrintWriter Java Basics - Anfänger-Themen 2
Der Grütz Verständnisfrage zu Übung aus Java Kurs - Schaltjahr bestimmen Java Basics - Anfänger-Themen 2
J Verständnisfrage zu throws neben Funktionen Java Basics - Anfänger-Themen 2
TimoN11 Verständnisfrage bei Aufgabe Java Basics - Anfänger-Themen 2
P Verständnisfrage zum Mapping Java Basics - Anfänger-Themen 3
M Java Version Verständnisfrage Java Basics - Anfänger-Themen 16
M Verständnisfrage zu eine Online Aufgabe Java Basics - Anfänger-Themen 7
T Verständnisfrage zur Konsolenausgabe Java Basics - Anfänger-Themen 2
M Verständnisfrage zu Generics Java Basics - Anfänger-Themen 7
D Verständnisfrage zur Modellierung einer HDD Java Basics - Anfänger-Themen 17
W Methoden Verständnisfrage Vererbung von Methoden Java Basics - Anfänger-Themen 14
S Verständnisfrage lokale Ordnerpfade Java Basics - Anfänger-Themen 1
T Verständnisfrage zu Interfaces Java Basics - Anfänger-Themen 7
J Java Starthilfe Verständnisfrage Aufgabe Java Basics - Anfänger-Themen 2
O Anfänger, Verständnisfrage Java Basics - Anfänger-Themen 3
C Verständnisfrage zu Modulo Java Basics - Anfänger-Themen 6
C Verständnisfrage bezüglich der Do-While Schleife Java Basics - Anfänger-Themen 9
L Verständnisfrage - Speicherabbild Java Basics - Anfänger-Themen 4
melly_ Verständnisfrage zu args Java Basics - Anfänger-Themen 3
A Variablen Verständnisfrage bzgl. Variablen/Referenzen Java Basics - Anfänger-Themen 3
K Verständnisfrage eines Abschnitts Java Basics - Anfänger-Themen 6
K Rekursion Verständnisfrage Java Basics - Anfänger-Themen 19
S Modell View Controller Verständnisfrage Java Basics - Anfänger-Themen 24
J Superklassen Konstruktor Verständnisfrage Java Basics - Anfänger-Themen 1
JavaTalksToMe Erste Schritte Println-Frage (Verständnisfrage) Java Basics - Anfänger-Themen 1
R Verständnisfrage zu Objekten u. Übergabeparameter Java Basics - Anfänger-Themen 8
G Collections Verständnisfrage zur For-Each-Schleife Java Basics - Anfänger-Themen 7
b1ck Interface Verständnisfrage zum GUI mit "swing" Java Basics - Anfänger-Themen 1
kilopack15 Verständnisfrage zur Verwendung von notify() bei Threads Java Basics - Anfänger-Themen 2
G Verständnisfrage zu for-each Java Basics - Anfänger-Themen 4
DontFeedTheTroll Erste Schritte Verständnisfrage zu If-Anweisung Java Basics - Anfänger-Themen 7
K Rekursion-Verständnisfrage Java Basics - Anfänger-Themen 4
J Java Server Pages - Verständnisfrage Java Basics - Anfänger-Themen 2
Z Verständnisfrage Anfängerprogramm Java Basics - Anfänger-Themen 0
T Verständnisfrage Zuweisungs-/arithmet. Operatoren Java Basics - Anfänger-Themen 2
G Methoden Verständnisfrage zur Methoden Java Basics - Anfänger-Themen 7
LionAge Kapselung, Verständnisfrage zur Objekterzeugung Java Basics - Anfänger-Themen 4
Z Verständnisfrage zum Multithreading Java Basics - Anfänger-Themen 3
R OOP / Verständnisfrage zum Konstuktor (siehe code) Java Basics - Anfänger-Themen 7
gamebreiti Verständnisfrage zu contains() Java Basics - Anfänger-Themen 10
A Verständnisfrage - Koordinatenumrechnung Java Basics - Anfänger-Themen 9
J Erste Schritte Verständnisfrage im Bezug auf das (richtige) Programmieren Java Basics - Anfänger-Themen 5
M Verständnisfrage zu JUnit Tests und private Methoden Java Basics - Anfänger-Themen 3
H Verständnisfrage Array Java Basics - Anfänger-Themen 2
I Interface Verständnisfrage Interfaces (Bsp.: Enumeration) Java Basics - Anfänger-Themen 2
I Verständnisfrage zu BridgePattern, Verwedung von super() Java Basics - Anfänger-Themen 4
P Verständnisfrage Java Basics - Anfänger-Themen 3
kaoZ Best Practice Verständnisfrage Listener bei lokalen Objekten Java Basics - Anfänger-Themen 8
D Input/Output Verständnisfrage Verzeichnis-/Dateiliste erstellen & Dateikonvertierung Java Basics - Anfänger-Themen 1
S Verständnisfrage zu Anweisungen und deren Wirkung Java Basics - Anfänger-Themen 7
H Verständnisfrage für oder Anweisung Java Basics - Anfänger-Themen 8
E Threads Verständnisfrage bzgl. Threads und Sleep Java Basics - Anfänger-Themen 2
H Verständnisfrage zu Java-Ausgabe Java Basics - Anfänger-Themen 3
S Verständnisfrage Java Basics - Anfänger-Themen 2
N Verständnisfrage Code Java Basics - Anfänger-Themen 8
B Verständnisfrage Java Basics - Anfänger-Themen 2
H Interface Comparable Verständnisfrage Java Basics - Anfänger-Themen 6
B Verständnisfrage Codezeile Java Basics - Anfänger-Themen 7
B Verständnisfrage:Beispielprogramm BlueJ Java Basics - Anfänger-Themen 3
M Kurze Verständnisfrage zu einer Java Aufgabe Java Basics - Anfänger-Themen 12
K Erste Schritte Kleine Verständnisfrage Java Basics - Anfänger-Themen 12
R Verständnisfrage Referenzvariablen in array Java Basics - Anfänger-Themen 3
M Verständnisfrage: Objekt erzeugen u. zuweisen Java Basics - Anfänger-Themen 16
I OOP Verständnisfrage zu Singelton Pattern Java Basics - Anfänger-Themen 21
M Verständnisfrage zu JPanel Java Basics - Anfänger-Themen 3
S Verständnisfrage: Exception Gebrauch Java Basics - Anfänger-Themen 2
R Verständnisfrage NPE Java Basics - Anfänger-Themen 5
M Verständnisfrage zur Zahlenumwandlung (Dezimal-->Dual) Java Basics - Anfänger-Themen 25
P Java Objekte - Verständnisfrage Java Basics - Anfänger-Themen 9
N Verständnisfrage zu folgendem Programm Java Basics - Anfänger-Themen 2
L Grundlegende Verständnisfrage Hasmap Referenzen Java Basics - Anfänger-Themen 4
S Verständnisfrage zu Interfaces Java Basics - Anfänger-Themen 2
VfL_Freak Verständnisfrage zur Klasse "TIMER" Java Basics - Anfänger-Themen 7
P Verständnisfrage zu Instanzen/Objekten Java Basics - Anfänger-Themen 9
M Verständnisfrage im Umgang mit Map Java Basics - Anfänger-Themen 10
K Verständnisfrage zu int.length und String.length() Java Basics - Anfänger-Themen 4
G 2D Array gleichsetzen verständnisfrage Java Basics - Anfänger-Themen 2
M kleine und einfache Verständnisfrage Java Basics - Anfänger-Themen 3
N verständnisfrage java.util.Calendar Java Basics - Anfänger-Themen 4
G Datentypen bits, bytes, chars - Verständnisfrage Java Basics - Anfänger-Themen 5
E Verständnisfrage zu Shutdownhook Java Basics - Anfänger-Themen 5
D Verständnisfrage: Java und MySql Java Basics - Anfänger-Themen 3
F Rekursion Verständnisfrage Java Basics - Anfänger-Themen 6
A Exception Verständnisfrage: Exceptions während, einer Statischenzuweisung abfangen Java Basics - Anfänger-Themen 10
Z Comparator Verständnisfrage Java Basics - Anfänger-Themen 5
D Verständnisfrage zu Funktionen Java Basics - Anfänger-Themen 6
H Verständnisfrage Persistenz Java Basics - Anfänger-Themen 10
neurox Verständnisfrage zu Threads Java Basics - Anfänger-Themen 4
E Verständnisfrage Syntax: frame.getContentPane().add(button) Java Basics - Anfänger-Themen 11
Y Kleine Verständnisfrage zum Thema dynamische Polymorphie Java Basics - Anfänger-Themen 3
F Verständnisfrage Objekt instanzierung / Polymorphie Java Basics - Anfänger-Themen 10

Ähnliche Java Themen

Neue Themen


Oben