Eigenschaften beim Ableiten enterben
-
Hallo,
folgendes ist gegeben:
class Fisch { int augen; int kiemen; }; class Frosch : public Fisch { int beine; int lunge; //keine Kiemen! }Auch wenn das biologisch vielleicht nicht ganz richtig ist ...
Es geht darum, dass der Frosch vom Fisch nicht die Kiemen erben soll.
Die anderen Eigenschaften sollen normal geerbt werden und der Frosch soll auch vom Fisch abstammen.Wie implementiere ich das in C++
-
Wie du schon selbst sagst, es ist biologisch nicht korrekt, also solltest du solche Ableitungen auch lassen. Ableitung heißt "ist ein". Ist ein Frosch ein Fisch? Nein! Na bitte.
Ableiten tut man nicht, um sich Tip-Arbeit zu sparen. Das ist das einzige was du hier willst, und das ist nicht Sinn der Sache.
-
Spendier den beiden eine gemeinsame Basisklasse Tier oder Schwimmviech oder sonstwas.
-
Yo, eine Basisklasse Tier (am besten abstract) würde schon besser sein.
-
Artchi schrieb:
Ableitung heißt "ist ein".
Öffentliche Vererbung/Ableitung (public) heißt "ist ein", nur vollständigkeits halber

-
-
Wie wärs mit einem Attribut bei Tier
Atmen-Werkzeuge [0..n] (Mögliche Typen: Lunge/Kiemen)
-
ich bilde mir ein, mal irgendwo gelesen zu haben, daß man kiemen mit einem trick in der klasse Frosch als private umdeklarieren kann. ich kann mich aber beim besten willen nicht mehr daran erinnern wo ich das gelesen habe und wie es geht.
-
Man kann es. Aber man tut es auf garkeinen Fall!
Ich würde Dir mal empfehlen Dir anzuschauen, warum es ein großer Fehler ist, Quadrat von Rechteck abzuleiten.
Mal n Beispiel:
class Fisch { ... mit Kiemen }; class Frosch: public Fisch { ... versteckte Kiemen hier }; ... irgendwo später void essen( Fisch* f) { entferneKiemen( f); // Fisch ist bäh mit Kiemen, also weg damit doMampf(); } int main() { Fisch f; Frosch g; essen( &f); // lecker Fisch essen( &g); // autsch... unserem Frosch werden die nicht vorhandenen Kiemen entfernt }Beispiele wie deines deuten auf einen Designfehler hin. Ich hoffe Du siehst, wie ganz harmlos aussehender Code plötzlich verbotene Dinge macht.
-
Mathias schrieb:
Wie wärs mit einem Attribut bei Tier
Atmen-Werkzeuge [0..n] (Mögliche Typen: Lunge/Kiemen)Oder mit policies!..
