Idee |
ein Objekt kann die Eigenschaften aus
mehreren Klassen beziehen
ein Objekt kann mehrere Schnittstellen besitzen
|
| |
|
Beliebtes Beispiel in der OO-Literatur:
Es gibt FleischFresser
und PflanzenFresser,
AllesFresser besitzen die Eigenschaften von beiden.
|
| |
|
Autos und Schiffe
sind Unterklassen von Fahrzeug,
AmphibienFahrzeug
ist sowohl Auto
als auch Schiff.
|
| |
|
MehrfachVERerbung ist eigentlich der falsche Begriff.
|
|
MehrfachBEerbung beschreibt die Richtung des Erbens präzise.
|
in C++ und Eiffel |
Mehrfachvererbung ohne Einschränkungen erlaubt
|
| |
Beispiel |
class Point {
private:
double x;
double y;
public:
Point(double x1, double y1) {
x = x1;
y = y1;
}
double getX() const { return x; }
double getY() const { return y; }
};
|
|
class Color {
private:
int c;
public:
Color(int c1) {
c = c1;
}
int getColor() const { return c; }
};
|
|
class ColoredPoint : public Point,
public Color
{
public:
ColoredPoint(double x, double y, int c)
: Point(x,y),
Color(c) {
}
};
|
|
void f() {
ColoredPoint * cp =
new ColoredPoint(1.0,2.0,255);
cp->getX();
cp->getY();
cp->getColor();
}
|
| |
|
mit Mehrfachvererbung kann eine Klasse
ohne großen Aufwand aus bestehenden Klassen
zusammengesetzt werden.
Die beerbende Klasse enthält alle Datenfelder und
alle Methoden aus allen beerbten Klassen.
|
| |
|
Verständlichkeit?
Programmteile über viele Stellen verstreut.
|
| |
|
schwierig zu implementieren!
|
| |