Pferdeapfel.essen()

Status
Nicht offen für weitere Antworten.

chil14r

Mitglied
Hi..hab mal ne Frage wie man in Java Methoden absichtlich verdecken kann...! Also ich geh mal von Basisklasse Obst aus und Tochterklasse Apfel.. von Apfel leite ich pferdeapfel ab... najajut nich ganz so toll die idee weil die methode essen natürlich geerbt ist.. also guten appetit.. wenn ich nun ein obj Apfel obj = new Pferdeapfel() erzeuge steht die Methode essen() immernoch zurfügung da sie ja von Obst geerbt ist. Nun meine Frage wie kann ich sie in der Klasse Pferdeapfel verdecken?
Danke für Vorschläge
 
R

Roar

Gast
das geht nicht. warum auch, es ist sinnlos. eine klasse Pferdeapfel wird nie von Apfel erben, weil es keinen sinn ergibt. klassenhierachieen sollten immer der logik entsprechen

edit: du könntest höchstens essen() überschrieben und dadrin eine BähSchmecktNichtExceptino schmeißen.
 

Sky

Top Contributor
Also, der Sinn von Vererbung liegt eher darin Eigenschaften und Methoden weiterzugeben, die in der jeweils erbenden Ebene auch benötigt werden.
Vererbung ist ausdrücklich nicht das Prinzip, Klassen, die einen ähnlichen Namen haben zu strukturieren.
 

chil14r

Mitglied
Ok das war vielleicht nen bischen weit hergeholt.. also objektorientierte Programmierung als Wiederspiegelung der Wirklichkeit... klasse vogel mit methode fliegen... subklasse Strauss... also ein Strauss ist ein vogel der nich fliegen kann .. tja man kann jetzt aussgeben er kann nicht fliegen oder exceptions werfen aberkann man auch die methode fliegen einfach verdecken(verschwinden lassen).. in der realen welt sagt ja auch niemand dem strauss daser nich fliegt, er kann es einfach nicht anwenden weil er zu schwer ist
 
B

Beni

Gast
Wenn solche Probleme auftreten, sollte man vielleicht die Klassenhierarchy anders strukturieren. Anstelle von Vogel, Fisch und Säugetier halt "Luftwesen", "Wasserwesen" und "Landwesen". (Anstelle von Klassen würde ich für Luftwesen, Wasswesen und Landwesen allerdings Interfaces benutzen, schliesslich gibt es Tiere die sowohl fliegen als auch schwimmen können).
 

Sky

Top Contributor
Illuvatar hat gesagt.:
Ansonsten eben, wie Roar gesagt hat, mit Exceptions. Ist aber etwas unsauber.
Dann sollte man den Tipp gleich weglassen ;-)

Die Idee von Beni ist m.E. die sauberste Lösung und sollte daher bevorzugt werden. Außerdem ist der Aufwand für die Umsetzung gleich mit dem Aufwand bei der Vererbungs-Struktur.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen

Ähnliche Java Themen


Oben