Hi Waldemar,
Wie du ja schon selbst sagst braucht dies natürlich nicht immer zu geschehen, aber wenn dort etwas steht, dann dient dies als Initialisierungswerte. So kannst du zum Beispiel eine Klasse Rechteck besitzen, die als Eigenschaften die Werte x und y besitzt. Das ganze sieht dann ungefähr so aus:
class Rechteck { int x, y }
Um nun dieses Rechteck zu erstellen muß du zwei Dinge tun:
1. Du mußt eine Instanz des Objektes Rechteck erschaffen, das sieht dann ungefähr folgendermaßen aus:
Rechteck MySquare;
Damit du nun aber noch mit diesem Objekt arbeiten kannst, mußt du den Eigenschaften noch Werte zuweisen, was dann wiederum so aussieht:
MySquare.x = 3;
MySquare.y = 4;
Soviel zur Vorgeschichte und wie man es machen könnte.
Aber nun stell dir vor du willst ein Rechteck 'erschaffen' und es direkt mit Werten füllen. Was machst du dann? Klar!! Du schreibst folgendes:
Rechteck MySquare;
MySquare.x = 8;
MySquare.y = 12;
Also insgesamt ein Dreizeiler. Um nun diese ganze Schreiberei etwas abzukürzen, schreibt man nun seinen eigenen 'Erschaffer' (Konstruktor). Das ist quasi der Funktionsaufruf mit dem man ein Objekt erzeugt, also bis jetzt hieß das Ding ja
Rechteck MySquare;
und man erhielt so ein Objekt MySquare ohne irgendwelche Werte. Möchte man aber direkt noch Werte übergeben, dann sieht das folgndermaßen aus:
class Rechteck {
int x, y;
Rechteck (int x1, int x2)
{ x = x1; y = y1;}
}
Nun hat man eine zusätzliche Funktion innerhalb der Klasse die beim Erschaffen des Objektes aufgerufen wird und dabei die entsprechenden Werte füllt. In unserem Beispiel sähe das dann so aus:
Rechteck MySquare(3,4);
Und schon hat man ein Objekt das direkt mit Variablen gefüllt ist.
In diesem Fall ist das Ganze natürlich ziemlich egal wie rum ich es angehe, aber es erleichtert die Programmierung doch erheblich bei komplexeren Objekten!!
Bis dann,
McMorning