Was sind Konstruktoren?

Davicito

Erfahrenes Mitglied
Ich bin gerade in Java eingestiegen und hab nicht verstanden, was Konstruktoren machen. Ich weiss, dass sind spezielle Methoden, geben aber nichts zurück und haben den selben Namen wie die Klasse. Und wenn man keinen Konstruktor in einer Klasse angibt, so erstellt Java zur Laufzeit einen automatischen Standartkonstruktor (Default Constroctor).
So viel zur Theorie, aber dennnoch habe ich kein Plan wo für ich diesen gebrauchen kann, wenn ich auch mit normalen Methoden arbeiten kann, weelche die mir auch etwas zurück liefern können.

Also nochmal, wofür brauche ich Konstruktoren? Was genau machen sie und was ist mit "This" und "super" gemeint?

Also ihr lieben schlauen Leute, ich baue auf jemanden, der mir das etwas leichter erklären kann als das was ich auch so in Büchern lesen konnte. In dieser Sache brauche ich einen Anstupser um weiter zukommen.

Liebe Grüße, Klaus.
 
Konstruktoren geben sehr wohl etwas zurück. Sie erstellen ein Objekt der Klasse und geben dieses zurück.

JLabel label = new JLabel("Hallo"); <- der Konstruktor gibt das Objekt zurück das dann in der Variable 'label' gespeichert bzw. referenziert wird.

Mit 'this' rufst du Klasseneigenschaften bzw Klassenmethoden auf.
Mit 'super' rufst du den Konstruktor der Vaterklasse auf. Nehmen wir an deine Klasse erbt von JLabel dann würde super(); aufruf in deinem Konstruktor den Konstruktor der Klasse JLabel aufrufen.

Gruß
 
Einfach gesagt ist der Konstruktor eine Art Anfangsmethode, die automatisch bei jeder neuen Instanz der Klasse aufgerufen wird.
Brauchbar zB um irgendeinen Variablen Anfangswerte zuzuweisen etc...

Du könntest in dem Fall natürlich auch eine normale Methode machen und jedesmal extra aufrufen; beim Konstruktor gehts von selber.
 
Ok ich versuche das bisher genannte mal mit ein bisschen Quellcode zu verbildlichen, vielleicht wird die Bedeutung des Konstruktors dann schneller klar.

Also erstmal kann man ja wie gewohnt die Variablen schon bei der Erstellung mit einem Wert versehen:
Java:
public class Bad {
	
	private String string = "Ich bin ein String";
	
	public Bad() {
	}

}
Da dies bei sehr vielen Variablen sehr schnell unübersichtlich werden kann, biedet es sich an die ganzen Zuweisungen in den Konstruktor zu übernehmen:
Java:
public class Good {
	
	private String string;
	
	public Good() {
		string = "Hallo ich bin ein String";
	}

}
Ein weiterer Vorteil hiervon, ist dass man den Konstruktor ganz einfach mit einem Parameter versehen kann um die Zuweisung variabel zu halten:
Java:
public class ConstructorParameter {
	
	private String string;
	
	public ConstructorParameter(String pString) {
		string = pString;
	}

}

Zweck bzw. Sinn des Konstruktors ist es sicher zu stellen, dass schon bei der Erstellung eines Objektes einer Klasse, alle wichtigen Variablen gesetzt sind, bzw wichtige Funktionen schon aufgerufen wurden, ohne dass man dies explizit noch einmal selber tun muss.

Ich hoffe ich konnte dir ein bisschen weiterhelfen
 
Außerdem kann man in anderen Sprachen (zB C++) nicht so einfach in der Klasse Werte zuweisen, da muss der Konstruktor dafür verwendet werden.
 
Zurück