Kapitel 10
Definition eigener Klassen
300
Abb. 10.7: Veranschaulichung des Geheimnisprinzips
10.8 Vererbung
Vererbung beschreibt die Beziehung zwischen einer allgemeinen Klasse (Basisklasse, Ober-
klasse) und einer spezialisierten Klasse (Unterklasse, Subklasse). Die Unterklasse besitzt
sämtliche Attribute und Methoden der Oberklasse. Man sagt, die Basisklasse vererbt ihre
Merkmale an ihre Unterklassen. Darüber hinaus hat eine Unterklasse aber in der Regel
noch zusätzliche Methoden und Attribute. Sie ist damit spezieller, reichhaltiger und weniger
abstrakt, das heißt, sie ist auf eine kleinere Menge von Objekten zugeschnitten als ihre
Basisklasse.
10.8.1 Spezialisierungen
Betrachten wir als Beispiel die Klasse Geld. Sie fasst alle Objekte zusammen, die als Merk-
male eine Währung und einen numerischen Betrag besitzen. Dies ist ein sehr abstraktes
Modell, das von vielen Details konkreter Geld-Objekte absieht. Von dieser Basisklasse kön-
nen speziellere Unterklassen abgeleitet werden, z.B. eine Klasse
Briefmarke, die Postwert-
zeichen modelliert. Neben den Attributen
wechselkurs, waehrung und betrag könnte eine
solche Klasse noch die Attribute
land und gestempelt besitzen. Ersteres enthält eine
Beschreibung des Herkunftslandes. Dieses ergibt sich nicht eindeutig aus der Währung,
denn es gibt z.B. mehrere Länder, die Briefmarken in Euro herausgeben. Ein wichtiges
Merkmal einer Briefmarke ist noch, ob sie gestempelt oder noch ungestempelt ist. Abbil-
dung 10.8 zeigt ein UML-Klassendiagramm mit verschiedenen Spezialisierungen der
Klasse
Geld. Die Vererbungsbeziehung wird in UML durch einen Pfeil mit nicht ausgefüll-
ter Spitze dargestellt, der auf die Basisklasse zeigt.
Bei der Definition einer Unterklasse schreibt man in der Kopfzeile hinter den Klassen-
namen in Klammern den Namen der Basisklasse:
Wir hatten bis jetzt immer als Basisklasse
object angegeben. Unterklassen können das Ver-
halten ihrer Oberklassen durch zusätzliche Methoden verfeinern oder durch Überschreiben
(overriding) neu definieren. Enthält die Definition der Unterklasse eine Methode mit dem
gleichen Namen wie eine Methode der Basisklasse, so gilt für Instanzen der Unterklasse
class Unterklasse(Basisklasse)
__betrag
__waehrung
wechselkurs
__str__()
getEuro()
__cmp__()
hotelrechnung.getEuro()
__add__()

Get Python 3 - Lernen und professionell anwenden now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.