|
Konstruktoren |
Sog.
Konstruktoren werden dazu benutzt, Objekte aus der Klasse zu erzeugen. Sie
erkennt man daran, dass sie wie Methoden aufgebaut sind, aber keinen
Rückgabewert, nicht einmal
void,
besitzen. Weiter haben die Konstruktoren den gleichen Namen wie ihre
Klasse.
Wenn man selbst eine Klasse schreibt, und keinen Konstruktor
implementiert, so besitzt sie automatisch den sog. Standardkonstruktor. In
unserem Fall hieße er:Punkt(){};
Da zwischen den geschweiften Klammern
keinen weiteren Text besitzt, kann man mit ihm zwar Objekte anlegen, diese
haben aber noch keine Eigenschaften. Im Falle unseres Punktes macht das
wenig Sinn. Wenn wir wollen, dass die Koordinaten eines konkreten Punktes
nach seiner Erzeugung auch Werte besitzen, sollte dies der
Standardkonstruktor leisten. Dazu überschreiben wir den implizit
vorliegenden Standardkonstruktor durch:
Punkt() {
x = 0;
y = 0;
}
Ein konkreter Punkt, den wir mit Hilfe
des neuen Standardkonstruktors anlegen, hat also die Koordinaten (0/0) .
Eine Klasse kann über mehrere
Konstruktoren verfügen. So kann bei einem laufen Programm sonnvoll sein,
dass ein Punkt erzeugt wird, dessen Koordinaten gerade berechnet wurden,
also nicht 0 sind. Dazu implementieren wir einen weiteren Konstruktor:
Punkt(int xNeu,
int yNeu) {
x = xNeu;
y = yNeu;
}
Natürlich heißen beide Konstruktoren
gleich. Damit ein Compiler zwei gleichlautende Konstruktoren unterscheiden
kann, müssen sie sich in der Signatur unterscheiden. Die Parameterliste
müssen also unterschiedlich viele Parameter haben oder, wenn die Anzahl
der Parameter bei beiden gleich ist, so müssen sie sich mindestens im Typ
einer Variablen in der Poarameterliste unterscheiden. Was wir hier über
gleichlautende Konstruktoren gesagt haben, gilt übrigens auch für alle
Methoden.
|