überschreibt abstrakte Methoden in einer geerbten abstrakten Klasse

8

Okay, im Grunde genommen habe ich das folgende Problem: Ich versuche, eine abstrakte Klasse eine andere abstrakte Klasse zu erben, die eine abstrakte Methode hat, aber ich möchte die abstrakte Methode in keiner von ihnen wegen einer dritten Klasse implementieren erbt von beiden:

%Vor%

Ich versuche, binäre Befehle von unären Befehlen zu trennen, möchte aber die execute-Methode in beiden nicht implementieren. Ich dachte darüber nach, Binary die abstrakte Methode zu überschreiben (da es muss) und dann einfach eine nicht implementierte Ausnahme-Sache zu werfen. Wenn ich es überschreibe, muss ich einen Körper deklarieren, aber wenn ich es abstrakt mache, "verstecke" ich die vererbte Methode.

Irgendwelche Gedanken?

    
thed0ctor 22.11.2012, 18:34
quelle

2 Antworten

14

Sie müssen execute() in der Binary-Klasse nicht deklarieren, da sie bereits von Command geerbt wurde. Abstrakte Methoden müssen nicht von anderen abstrakten Klassen implementiert werden - die Anforderung wird an die konkreten Klassen übergeben.

%Vor%     
Mike Parkhill 22.11.2012, 18:37
quelle
3

Lassen Sie die Deklaration von execute() in Binary einfach weg. Da Binary ebenfalls abstrakt ist, müssen keine abstrakten Methoden seiner Vorfahren implementieren

    
Ondrej Tucny 22.11.2012 18:37
quelle