Hallo zusammen,
der Titel sollte mein Problem eigentlich schon ganz gut umschreiben.
Mich interessiert, ob es dafür eine pauschale Aussage gibt oder ob man das von Fall zu Fall betrachten muss.
In meinem Programm habe ich ein Interface Symbole und 2 Klassen Rechteck bzw. Kreis, die das Interface implementieren. Jetzt stelle ich aber fest, dass einige der Methoden von der Implementation her identisch sind. Was sicherlich daran liegt, dass ich eine ArrayList mit Symbolen verwalte, wo ich dann aber Elemente vom Subtyp einfüge. Wenn ich nun auf den Elementen der ArrayList eine Methode aufrufe, z.B. zeichneSymbol() wird die entsprechende Methode des Subtyps aufgerufen. Ich glaube der richtige Begriff dafür ist dynamisches Binden.
Jetzt gibt es aber Methoden, wie z.B. istSymbolAusgewaehlt(), die einfach nur einen boolean-Wert abfragen, was bei beiden Symbolen ja gleich ist. Um nun doppelten Code zu vermeiden, würde es doch reichen, die Methode in Symbol zu implementieren. Dann müsste ich das Interface aber zu einer abstrakten Klasse umwandeln.
Daher meine Frage, woran man das festmacht, ob man nun eine abstrakte Klasse nutzen sollte oder ein Interface.
Vielen Dank
der Titel sollte mein Problem eigentlich schon ganz gut umschreiben.
Mich interessiert, ob es dafür eine pauschale Aussage gibt oder ob man das von Fall zu Fall betrachten muss.
In meinem Programm habe ich ein Interface Symbole und 2 Klassen Rechteck bzw. Kreis, die das Interface implementieren. Jetzt stelle ich aber fest, dass einige der Methoden von der Implementation her identisch sind. Was sicherlich daran liegt, dass ich eine ArrayList mit Symbolen verwalte, wo ich dann aber Elemente vom Subtyp einfüge. Wenn ich nun auf den Elementen der ArrayList eine Methode aufrufe, z.B. zeichneSymbol() wird die entsprechende Methode des Subtyps aufgerufen. Ich glaube der richtige Begriff dafür ist dynamisches Binden.
Jetzt gibt es aber Methoden, wie z.B. istSymbolAusgewaehlt(), die einfach nur einen boolean-Wert abfragen, was bei beiden Symbolen ja gleich ist. Um nun doppelten Code zu vermeiden, würde es doch reichen, die Methode in Symbol zu implementieren. Dann müsste ich das Interface aber zu einer abstrakten Klasse umwandeln.
Daher meine Frage, woran man das festmacht, ob man nun eine abstrakte Klasse nutzen sollte oder ein Interface.
Vielen Dank
Zuletzt bearbeitet von einem Moderator: