public class OberKlasse {
int a;
public OberKlasse() { // Konstruktor
this.a = 15;
}
}
public class UnterKlasse extends OberKlasse {
int b = 20;
public UnterKlasse() { //Konstruktor
//super(); //macht kein unterschied ob es da ist oder nicht
}
public int anzeigeUnterKlasse() {
return a + b; //return ist immer 35
}
}|
Danke, wieder was gelernt - war mir völlig unbewusst, dass parameterlose Konstruktoren der Basisklasse immer ausgeführt werden. Diese Erkenntnis hilft mir sicherlich bei der Fehlersuche ;)
– Andreas_D 08.09.09
|
public class Base
{
...
void MachWas()
{
...
};
};
public class Derived extend Base
{
...
void MachWas()
{
super.MachWas(); //Führt die Methode MachWas von Base aus
...
}
}
| 2 |
Autsch. `super()` ist immer ein Konstrukturaufruf. Wenn eine Methode aus der Superklasse aufgerufen werden soll, sollte schon `super.machWas()` aufgerufen werden.
– Bombe 09.09.09
|
|
|
@Bombe: Richtig, jetzt wird mir das auch klarer. super() alleine macht da garnichts...zumindest erkenne ich das nicht. Aber wenn man super.bla() macht dann ist das schon eher nachvollziehbar! Das war übrigens das was hier irgendwie KEINER erkennen oder mir sagen konnte... Amen
– Revollt 09.09.09
|
||
|
Ah, da bin ich dann wohl mit Ruby durcheinander gekommen (ich glaube da verhielt sich das so...). Hab den Fehler korrigiert, danke dafür.
– Shelling 09.09.09
|
public MyClass(int i)
super(6)
super(6)
Kreis( int x, int y, int rad ) {
super( x, y ); radius = rad; }super.ausgeben()
|
"super() führt den Konstruktor der Vorfahrenklasse aus" - verstehe ich nicht. Mit oder ohne Super wird der Konstruktor der Vorfahrenklasse ausgeführt. Das war ja eigentlich meine Frage... bzw. blicke ich da nicht mehr durch.
– Revollt 08.09.09
|