Der Konstruktor der abgeleiteten Klasse ruft implizit den Konstruktor der Basisklasse, in der Java-Terminologie Oberklasse genannt, auf. Bei der Vererbung werden alle Konstruktoren der Basisklasse vor den Konstruktoren der abgeleiteten Klasse aufgerufen, und zwar in der Reihenfolge, in der die Klassen in der Klassenhierarchie erscheinen.
Wenn nun die Basisklasse mehr als einen Konstruktor hat, muss die abgeleitete Klasse festlegen, welcher davon aufgerufen werden soll. Zum Beispiel:
public class CoOrds
{
private int x, y;
public CoOrds()
{
x = 0;
y = 0;
}
public CoOrds(int x, int y)
{
this.x = x;
this.y = y;
}
}
//inherits CoOrds:
public class ColorCoOrds : CoOrds
{
public System.Drawing.Color color;
public ColorCoOrds() : base ()
{
color = System.Drawing.Color.Red;
}
public ColorCoOrds(int x, int y) : base (x, y)
{
color = System.Drawing.Color.Red;
}
}
Für weitere Informationen besuchen Sie bitte die Website: http://msdn.microsoft.com/en-us/library/ms228387(v=vs.80).aspx
0 Stimmen
Ich glaube nicht, dass dies in einer anderen Sprache (wie Java) der Fall ist. Nur der Standard-Ctor (falls vorhanden) wird von der untergeordneten Klasse aufgerufen.
0 Stimmen
Nun, weil es ein anderes Objekt ist. (die Funktionen sind dieselben)
2 Stimmen
@KarlKnechtel Weil es sinnvoll ist, wenn in einer Kindklasse keine Konstruktoren explizit definiert sind, die Konstruktoren der Basisklasse zu übernehmen. Die Basisklasse kann Variablen haben, die man mit dem Konstruktor setzen kann, wie z.B. (X, Y, Farbe), die sich in der abgeleiteten Klasse nicht ändern würden, d.h. der Konstruktor wäre weiterhin gültig.
2 Stimmen
@KarlKnechtel aus demselben Grund wie alle anderen öffentlichen Methoden vererbt werden?