Es gibt keine Vererbung. Vererbung ist eine "ist-a" -Beziehung (Nun, manchmal nicht einmal eine "ist-a" -Beziehung, wie im folgenden Link erwähnt). Ein Würfel ist kein Quadrat, und ein Quadrat ist kein Würfel.
Wie würden Sie konstruieren, hängt davon ab, wie Sie modellieren. Du könntest mit etwas wie einem Würfel gehen, der 6 Quadrate hat (ein Würfel ist nicht, er hat 6 Quadrate; eine Zusammensetzung), oder ein Würfel hat eine Seitengröße, genau wie ein Quadrat. Aber sobald es kein "ist-a" gibt, wäre eine Vererbung eine gefährliche Zone ...
Außerdem muss in einer Vererbung alles, was für die Basisklasse gültig ist, für die Abgeleitete gelten. Es ist das Square extends Rectangle Problem. Zum Beispiel:
Angenommen Würfel erbt Square: Wenn Ihr Square eine Methode changeArea (double area) und getSide() hat, sollte das gleiche für den Cube möglich sein. Aber es ist nicht, da die Fläche eines Würfels 6 mal die Fläche eines Quadrats ist (es hat 6 Quadrate).
Platz Nimmt man erbt Cube: Wenn Ihr Cube ein setVolume (doppeltes Volumen) Methode hat, wird Ihr Platz gebrochen werden, wenn es kein Volumen
Schließlich hat, wenn Sie Vererbung verwenden möchten, können Sie erstellen Ein GeometryObjectWithEqualSides Objekt, dann könnten beide davon erben. :)
Square erbt Polygon, und Cube erbt Movie. – aehiilrs
lol, gut eins: D – AraK