Überschreiben einer "super.super"-Methode

kmt

Mitglied
Hallo Forum,

ich habe gerade folgenden Problem:
Ich habe eine Klasse "KlasseA" , die von einer anderen "KlasseB" abgeleitet ist und KlasseB ist von KlasseC abgeleitet. In KlasseA soll eine Funktion aus KlasseC überschrieben werden. Leider funktioniert das nicht. Mein Code sieht schematisch wie folgt aus:

Java:
public class KlasseA extends KlasseB {

	@Override
	public void methode(Parameter a) {
		super.methode(a);
	}
}
	
public class KlasseB extends KlasseC {
	public void methode(Parameter a) {
	}
}
Als Fehler zeigt mir eclipse folgendes an: "The method methode(Parameter) of type KlasseA must override or
implement a supertype method"

was mache ich falsch?
Danke, kmt
 
Der Beispielcode beschreibt doch nicht das Problem, oder? Müsste es dazu nicht so aussehen:
Java:
public class KlasseA extends KlasseB {
 
    @Override
    public void methode(Parameter a) {
        super.methode(a);
    }
}
    
public class KlasseB extends KlasseC {
}

public class KlasseC {
    public void methode(Parameter a) {
    }
}

Trotzdem müsste es in beiden Fällen eigentlich funktionieren.
 
Ja, Du hast natürlich recht. public void methode(Parameter a) befindet sich in KlasseC.

Aber eclipse schlägt vor, dass @Override zu entfernen. Aber weder mit noch ohne wird die überschriebenen Methode aus KlasseA aufgerufen.

kmt
 
Wenn Eclipse das vorschlägt, dann stimmen die Methodensignaturen wohl doch nicht 100%-ig überein. Möglicherweise passt ja das Package bei den Argumenttypen nicht.
 
> Aber weder mit noch ohne wird die überschriebenen Methode aus KlasseA aufgerufen.

gerne bringe ich wieder eine allgemeine Regel an:
eine überschriebene Methode ist nicht zu umgehen,
wenn B eine Methode von A überschreibt, dann kann vielleicht B so nett sein, super.methode() anzubieten,
von außen ist es aber unmöglich, an einem B-Objekt an die Methode von A zu gelangen,
nicht durch Erben von B, nicht durch normale Sytax, nicht durch Reflection, gar nicht
 
Du meinst, einmal überschrieben, kann wird die Originalmethode nicht mehr benutzt?
Das Problem war aber, dass die überschriebene Methode nicht benutzt wurde.

kmt
 

Neue Themen


Zurück
Oben