Whouzuo: Abstrakte methoden praxistest

Beitrag lesen

Hallo,

Man könnte sehr wohl die Ellipse vom Kreis erben lassen, da sie sich nicht anders verhält. Sie hat schließlich nur zusätzliche Attribute und Methoden. Es geht allerdings keine Funktionalität verloren. Auffassen könnte man das dann als eine "Erweiterung" des Kreises.

Dann hast du eine Generalisierung und Vererbung dient der Spezialisierung. Dadurch verschlechterst du die Verständlichkeit der Vererbungshierarchie. Der Kreis ist eine Spezialform der Ellipse und des Wegen muss der Kreis von der Ellipse erben, welches zu Problemen führt.

Ja beide Vererbungsrichtungen haben ihre Nachteile.

Die "richtige" Vererbungsrichtung ist aber Spezialisierung. Das dient ja eben dazu, dass dir der Compiler die Arbeit abnimmt, wann ein Objekt erlaubt ist und wann nicht. Würde man mit Vererbung generalisieren, wäre das ganze witzlos.

Aber auch keine Vererbung zu verwenden ist ungünstig, da man dann ja quasi die Implementierung eins zu eins kopieren müsste.

Das Kreis-Ellipse-Problem ist nicht so ganz einfach. Meine Intuition sagt mir, dass ich einen Kreis auch nicht von einer Ellipse erben lassen würde, denn ein Kreis _ist_ keine Ellipse. Er sieht aus wie eine Ellipse, aber er verhält sich nicht wie eine. Folglich kann man hier nicht vererben. Das Kopieren von Code ist nicht immer schlecht oder falsch, nämlich dann nicht, wenn sich Code1 später mal verändert, wobei Code2 gleichbleiben soll.