Klassendesign: Extend / Implement

Status
Nicht offen für weitere Antworten.

alexpetri

Aktives Mitglied
Hi,

ich habe eine kleine Codedesingfrage:

ich habe mehrere Report Klassen und ein Report Interface wo methoden drinstehen die jeder Report definitiv haben sollte. Das ist der IST Stand.
jetzt möchte ich eine Methode einführen die in jedem Report vorkommen muss (=> also im interface definiert ist) aber schon "vorgecoded" ist. Dafür will ich eine abstrakte Klasse benutzen.
Die frage ist jetzt: Wer extended und implemented wen?
implementiert die abstrakte Klasse das Interface? und die Report Klassen "extenden" erweitern die Abstrakte Report Klasse. Oder wird jede ReportKlasse und extended und implemented? wie gehe ich vor?
 

musiKk

Top Contributor
So, wie du zuerst sagtest: Die abstrakte Klasse implementiert das Interface und programmiert die gemeinsamen Methoden, der Rest vom Interface wird automatisch als abstract angenommen (im Prinzip ist ein Interface ja eine abstrakte Klasse mit nur abstrakten Methoden). Alle konkreten Klassen, die die abstrakte Klasse "extenden", muessen alle nicht durch die abstrakte Klasse implementierten Methoden des Interfaces implementieren.
 
S

SlaterB

Gast
die Basisklasse sollte das Interface implementieren,
ist zwar evtl. nicht zwingend, aber macht die Sache doch deutlicher,

die anderen Klassen erhalten dann das Interface automatisch vererbt,
ein wiederholendes extends wäre nur eine Art Dokumentation, inhaltlich ohne Auswirkung


bei dieser Sturktur könnte das Interface auch ganz wegfallen und die Basisklasse als Verallgemeinung verwendet werden
(Parameter in allgemeinen Operationen usw.)
 

alexpetri

Aktives Mitglied
okay - genauso funktioniert es
AbstrakteKlasse implementiert Interface
und die Reportklassen extenden die Abstrakte Klasse
 
M

maki

Gast
alexpetri hat gesagt.:
okay - genauso funktioniert es
AbstrakteKlasse implementiert Interface
und die Reportklassen extenden die Abstrakte Klasse
Das ist so etwas wie ein Ideom:
Interface
Abstrakte Klasse welches das Interface Implementiert
Konkrete Klassen erben von der abstrakten

Wenn du jetzt noch eine Factory hättest, welche zwar konkrete Objekte zurückgibt, aber nur das Interface als Rückgabetyp hat, wüssten die nutzer nix über die Implementierung(en).
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben