Java "abstrakte" Methode mit Körper

7

gibt es die folgenden Klassen:

%Vor%

Wie kann ich vermeiden, dass ich die "System.out.println (" Methode namens ") schreiben muss" zwei mal?

Danke für die Antworten

KaliberR.50

    
CalibeR.50 06.07.2013, 19:41
quelle

6 Antworten

12

Bringen Sie die allgemeine Funktionalität in die Oberklasse und definieren Sie eine weitere abstrakte Methode, für die die Unterklassen ihre eigene Implementierung definieren.

%Vor%

Auf diese Weise können Sie vermeiden, dass die allgemeine Methode der Oberklasse doppelt aufgerufen wird.

    
user000001 06.07.2013, 19:49
quelle
4

Sie können die Implementierung run () in die abstrakte Klasse einfügen:

%Vor%

In der bearbeiteten Version Ihrer Frage können Sie einfach eine vererbte Run-Implementierung verwenden

%Vor%     
Dmitry Bychenko 06.07.2013 19:44
quelle
3

Wenn ein Teil der Implementierung von run() sowohl für Sub1 als auch für Sub2 gilt, schlage ich vor, dass Sie einfach Vererbung und Überschreibung in den Unterklassen verwenden. Hier ist das Codebeispiel:

%Vor%

Der Trick dabei ist, dass die Klasse Super bei der Implementierung von Methoden abstract definiert werden kann. Wenn Sie Unterklassen haben, die den gemeinsamen Code nicht benötigen, können Sie run() ohne den super.run() -Code überschreiben und alles ändern.

    
francoisr 06.07.2013 19:58
quelle
2

Sie können den allgemeinen Code in die Super-Klassenmethode einfügen und ihn von Unterklassenmethoden aufrufen.

%Vor%     
NINCOMPOOP 06.07.2013 19:48
quelle
2

Verwenden Sie das "Template Method Pattern":

%Vor%

Zusätzlich können Sie den Lauf geschützt machen.

    
bzzzrd 06.07.2013 19:55
quelle
1

Wenn Sie möchten, dass alle Unterklassen das gleiche Verhalten haben, dann wäre die korrekte Methode, die Methode nur in der Oberklasse zu codieren, damit die Unterklassen sie erben können. Aber das würde die Notwendigkeit beseitigen, dass Ihre Superklasse in diesem Fall abstrakt ist, da sie ihre einzige Methode implementiert.

    
Kon 06.07.2013 19:44
quelle