super.super

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
 
S

SlaterB

Gast
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
 

Niki

Top Contributor
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
 
M

maki

Gast
Hmmm.. wäre es nicht möglich, eine Downcast auszuführen?

So in de Art:
Code:
Klasse  klasse= (Klasse) klasse2;
klasse.methode();
 
G

Guest

Gast
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).
 
G

Gast

Gast
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.

Ähnliche Java Themen

Neue Themen


Oben