Klassen Vererbung und zusätzliche Unterklassen

Diskutiere Klassen Vererbung und zusätzliche Unterklassen im Java Basics - Anfänger-Themen Bereich.
F

fhoffmann

Auch wenn es zunächst so scheint, dass ein Square ein Rectangle ist, so stimmt das nicht wirklich!
In einer Klasse Rectangle kann ich eine Methode schreiben, die beispielsweise die Breite verdoppelt ohne die Länge zu verändern. Dies ist in Square jedoch verboten. Also hat ein Square - was das Verhalten betrifft - nicht alle Eigenschaften von Rectangle.
Deshalb sollte auch Square von Shape erben.
 
MoxxiManagarm

MoxxiManagarm

Darüber lässt sich streiten, Unrecht hast du nicht, rein aus der Geometrie ist die Vererbung schon richtig und eventuell auch das Ziel der Übung. Man könnte ja auch die Breite-verdoppeln Methode wieder überschreiben und einfach nichts tun oder eine Exception werfen oder gleichzeitig die Höhe auch mit verändern.
 
mrBrown

mrBrown

Auch wenn es zunächst so scheint, dass ein Square ein Rectangle ist, so stimmt das nicht wirklich!
In einer Klasse Rectangle kann ich eine Methode schreiben, die beispielsweise die Breite verdoppelt ohne die Länge zu verändern. Dies ist in Square jedoch verboten. Also hat ein Square - was das Verhalten betrifft - nicht alle Eigenschaften von Rectangle.
Deshalb sollte auch Square von Shape erben.
Stimme zwar zT zu, diesen Fall löst man aber einfach, indem man solche Klassen grundsätzlich immutable macht.
 
F

fhoffmann

Die Überlegung, dass ein Quadrat kein Rechteck ist, stammt nicht von mir.
Sie ist schon beschrieben in einem Artikel von Robert C. Martin aus den späten 90-er Jahren des letzen Jahrtausends:
Es geht hierbei um das "Liskov Substitution Principle (LSP)".
Dass es manchmal praktisch sein kann, dieses Prinzip zu verletzen, will ich nicht bestreiten.
 
Thema: 

Klassen Vererbung und zusätzliche Unterklassen

Passende Stellenanzeigen aus deiner Region:
Anzeige

Neue Themen

Anzeige

Anzeige
Oben