Abstrakte Klassen

lucyyy

Mitglied
Hello,
ich wollte einmal fragen, wie ich den redundanten Code in den Subklassen von einer abstrakten Methode entfernen kann.
Meine Subklassen haben gleiche Methoden wie die Superklasse, allerdings bekomme ich es nicht hin die Methoden zu entfernen,
ohne das ein Fehler auftretet.
 

White_Fox

Top Contributor
Naja...indem du du redundanten Teile in der Superklasse implementierst.

Wenn sich die Methoden in kleinen Details unterscheiden, z.B. nur ein anderes Enum verwendet wird oder so, dann wird das in eine abstrakte Methode ausgelagert.

Edit: Beispiel:
Java:
enum SomeEnumForEveryConcreteClass{
    ENUMA,
    ENUMB,
    ENUMC
}


public abstract class SuperClass{
    public abstract void someMethodProcessingAnEnum();
}

public class ClassA{
    @Override
    public void someMethodProcessingAnEnum(){
        //...do something with SomeEnumForEveryConcreteClass.A
    }
}


//Oder:
public abstract class SuperClass{
    public void someMethodProcessingAnEnum(){
        //...do all what you have to do, but do it with getEnum() here
    }
    
    protected abstract SomeEnumForEveryConcreteClass getEnum();
}

public class ClassA{
    @Override
    protected SomeEnumForEveryConcreteClass getEnum(){
        return SomeEnumForEveryConcreteClass.A;
    }
}
 
Zuletzt bearbeitet:

lucyyy

Mitglied
Naja...indem du du redundanten Teile in der Superklasse implementierst.

Wenn sich die Methoden in kleinen Details unterscheiden, z.B. nur ein anderes Enum verwendet wird oder so, dann wird das in eine abstrakte Methode ausgelagert.
Ja aber irgendwie funktioniert das nicht.
Die Methoden sind alle in der Superklasse gleich (fast alle) und wenn ich Diesen dann in den Subklassen entferne, failed der Test.
 

White_Fox

Top Contributor
Na, dann poste doch mal deinen Code, vielleicht finden wir ja was.

Edit:
und wenn ich Diesen dann in den Subklassen entferne, failed der Test.

Ja, das ist aber logisch, wie soll das auch funktionieren. Dann brauchst du eine funktionierende Implementation in deinem Unittest, die de abstrakten Teile implementiert.

Ich mache für so etwas meist eine innere Klasse im Test.
 

Neue Themen


Oben