[Java] Setter/getter & Konstruktor Unterschied mit Beispiel

Schnuffix10

Cadet 2nd Year
Registriert
Okt. 2013
Beiträge
24
Hey,

kann mir jemand den praktischen Unterschied zwischen setter/getter & Konstruktor erklären?

Bis jetzt hab ich es so verstanden, dass beim setter/getter die Eingabe vom User erfolgt und beim Konstruktor vorgegeben ist?!


Hätte vielleicht jemand ein simples Beispiel für den Einsatz?


Wäre super, wenn mir wer helfen könnte :)


MfG
 
Übersetze es doch einfach: in der setter Methode kannst du den Wert ändern/setzen, bei der getter bekommst du den Wert überliefert (get)
 
@ diamdomi
danke für deine Antwort.

Das Problem ist eher, dass ich nicht genau weiß wann ich Setter/getter und wann Konstruktor nehmen sollte.

Bzw was beide genau Unterscheidet.
 
Der Konstruktur wird aufgerufen, wenn die Klasse erstellt wird.
Getter/Setter dienen dazu Attribute von Klassen zu lesen / schreiben. Das geht immer, solange ein Objekt der Klasse vorhanden ist.

Beispiel:

Code:
public class Mensch {
	/**
	 * Der Name des Menschen.
	 */
	private String _name;
	
	/**
	 * Der Konstruktur, welcher beim Erstellen eines Menschen aufgerufen werden muss, da nur ein Konstruktor vorhanden ist.
	 * In diesem Beispiel wird somit sichergestellt, dass der Name des Menschen gesetzt ist.
	 */
	public Mensch(String name) {
		if (null == name) {
			throw new IllegalArgumentException("Der Name eines Menschen darf nicht `null` sein!");
		}
		_name = name;
	}
	
	/**
	 * Holt den Namen des Menschen um ihn z. B. anzuzeigen.
	 */
	public String getName() {
		return _name;
	}
	
	/**
	 * Setzt den Namen des Menschen. z. B. Namensänderung.
	 */
	public void setName(String name) {
		if (null == name) {
			throw new IllegalArgumentException("Der Name eines Menschen darf nicht `null` sein!");
		}
		_name = name;
	}
}

Anwendung des Beispieles:
Code:
Mensch max = new Mensch("Max Mustermann"); // Konstruktor! 
System.out.println("Max sein vollständiger Name ist: '" + max.getName() + "'"); // Ergebnis: Max Mustermann
// Annahme Max heiratet und ändert seinen Nachnamen von Mustermann auf Musterfrau.
max.setName("Max Musterfrau");
System.out.println("Max sein vollständiger Name ist: '" + max.getName() + "'"); // Ergebnis: Max Musterfrau
 
Ganz grob:
Einen Konstruktor benutzt du beim initialisieren einer Klasse. Getter und Setter um Werte in einer statischen Klasse oder nach der Initialisierung der Klasse zu ändern
 
Erstmal musst du ein Object erstellen, dazu wird der Konstruktor aufgerufen:

zB.
Code:
ObjectErstellen Object = new ObjectErstellen(Wert 1, Wert 2);

Object.setter();
int a = Object.getter();
 
Es gibt dafür keine fixe Regel.

Der Unterschied ist, dass die Werte im Konstruktor direkt beim Erzeugen der Objekt-Instanz gesetzt werden. Bei Gettern/Settern erst danach. Ist meist völlig egal. Das Objekt muss halt korrekt initialisiert sein, bevor Du damit arbeitest.

Ich persönlich vermeide Getter/Setter wenn möglich.
 
@maxator
Mir gefällt der Stil auch nicht, ist aber nicht wirklich ungewöhnlich. Früher sah man auch häufig "m_" als Prefix. Eclipse z.B. verwendet "f".

Man sollte den Stil dann halt nur konsequent anwenden!
 
Der Prefix wird ja deswegen verwendet, um Instanz-Variablen zu kennzeichnen. Heute leistet das die Syntax-Hervorhebung der IDE. Früher gab es das noch nicht.
 
Behalt einfach im Hinterkopf, dass der Konstruktor nur einmal (bei Erzeugung des Objekts) aufgerufen wird, Setter-Methoden jedoch nach Belieben. Dementsprechend macht es Sinn, im Konstruktor diejenigen Eigenschaften festzulegen, die das Objekt definieren und sich vorraussichtlich nicht ändern werden.

Ein Beispiel wäre eine Liste von Gegenständen, die du in deinem Online-Shop führst. Alle haben eine eindeutige ID, diese würdest du im Konstruktor übergeben. Die Preise unterliegen allerdings Schwankungen, es macht also Sinn, hierfür eine Methode 'setPrice(double d)' zu definieren.
 
Alles klar. Ich danke euch ;)

@ killkrog & Shimmy979 haben es sehr gut für mich, der seit 7 Tagen Java lernt, erklärt. :p
 

Ähnliche Themen

Zurück
Oben