super.super

  • Themenstarter Themenstarter Gast
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
G

Gast

Gast
Hallo ich hab ein kleines Problem.

Und zwar hab ich eine klasse
Code:
public class Klasse{
methode(){}
}


Eine Klasse die von dieser Erbt
Code:
public class Klasse1 extends Klasse{
methode(){
super.methode();
doOtherThingsKlasse1();
}
}
Eine Klasse die wiederum von dieser erbt.
Code:
public class Klasse2 extends Klasse1{
@Override
methode(){
super.methode();
doOtherThingsKlasse2();
}
}

das Problem ist das ich an Klasse1 und Klasse nichts ändern darf ("Fragile Base Class").

Nun möchte ich allerdings in Klasse2 mit super.methode(); Klasse#methode() aufrufen ohne, das der code von doOtherThingsKlasse1() aufgerufen wird.

Kann ich das irgendwie bewerkstelligen und wenn ja wie?

besten dank
 
unmöglich in Java,
Klasse1 hat die volle Kontrolle über Klasse und bietet keinen Ausweg,
auch mir Reflection oder sonstigen Bösheiten nicht zu überwinden
 
Nein, das geht nicht, weil in Java die tatsächliche Methode immer erst zur Laufzeit auf Grund des tatsächlichen Typs ermittelt wird (late binding). Ich sehe daher keine Chance
 
Hmmm.. wäre es nicht möglich, eine Downcast auszuführen?

So in de Art:
Code:
Klasse  klasse= (Klasse) klasse2;
klasse.methode();
 
Ich weiss ja nicht wie komplex dein ganzes Aufbau ist aber dein kleines Beispiel hier wäre doch recht einfach zu lösen, in dem auch Klasse 2 von Klasse erbt (statt von Klasse 1).
 
So was in der Art hab ich mir dann auch vorgestellt.

Neben der Methode methode() gibt es halt noch einen wust anderer Methoden bei denen Vererbung mehr oder weniger Sinn macht.

Klasse2 wird von Klasse erben und die restlichen Methoden werden an Klasse1 delegiert.

Allerdings bräuchte ich dann auch wiederum ein Interface das Klasse 2 repräsentiert, da ich an anderen Stellen Ein Objekt vom Typ Klasse 2 erwarte.

besten dank nochmals
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben