Erzwinge die Verwendung einer Basisklassenmethode in Java

8

Sagen wir, ich habe zwei Klassen Base und Derived :

%Vor%

Jetzt mit diesem:

%Vor%

Wird gedruckt:

%Vor%

Meine Frage ist: Ist es möglich, d.methodA() auf Base.methodB() zu setzen? Ich möchte, dass der Code ausgedruckt wird:

%Vor%

Für diejenigen, die sich in C ++ auskennen, könnte dies mit etwas wie Base::methodB() in der Klasse Base geschehen. Gibt es eine Entsprechung in Java?

Ich bin mir fast sicher, dass das schon einmal gefragt wurde, aber ich konnte nichts finden, es tut mir leid, wenn es ein Duplikat ist.

    
yizzlez 06.05.2014, 01:53
quelle

3 Antworten

6

Wenn eine Methode in der Basisklasse überschrieben werden kann und die abgeleitete Klasse eine solche bereitgestellt hat, gibt es keine Möglichkeit, einen Aufruf der Methode der Basisklasse zu erzwingen.

Wenn die Basisklasse die Funktionalität in der Basisklasse aufrufen muss, kann sie sie in eine separate Methode einfügen und sie als final deklarieren. Dann könnte es eine Entscheidung zwischen seiner eigenen Implementierung und der abgeleiteten Implementierung treffen:

%Vor%     
dasblinkenlight 06.05.2014, 02:01
quelle
0

Kann es nicht tun. In C ++ - sprich, sind alle Java-Methoden "virtuell". Tun Sie das stattdessen:

%Vor%     
james large 06.05.2014 02:00
quelle
0

Ich denke, Sie können erreichen, was Sie wollen, indem Sie die Funktionalität in der Elternklasse in ihre eigene Methode wie folgt aufteilen. Nicht die Richtung, in die du geschaut hast, sondern was du willst:

%Vor%     
David Levy 06.05.2014 02:10
quelle

Tags und Links