Eine Unterklasse ist die Klasse, die von einer anderen erbt. Sie übernimmt deren Eigenschaften und Methoden und kann eigene hinzufügen oder geerbte ersetzen.
- Unterklasse
Die Klasse, die von einer anderen erbt und deren Verhalten ergänzt oder ersetzt.
Beispiel: „Die Unterklasse für Lastschriften überschreibt allein die Erzeugung des Belegs.“Auch: Subklasse, der Name aus Java und Smalltalk; abgeleitete Klasse, der Name aus dem C++-Umfeld; Kindklasse in Anlehnung an den Dokumentbaum.
Die Gegenrichtung ist die Oberklasse; der Vorgang heißt Vererbung.
class Zahlungsart: # Oberklasse
def beleg(self):
return "Zahlung erhalten"
class Lastschrift(Zahlungsart): # Unterklasse
def beleg(self):
return "Lastschrift eingezogen"Was eine Unterklasse ändern darf
Sie darf ergänzen und ersetzen, aber nicht widersprechen. Wer eine geerbte Methode überschreibt, muss sie unter denselben Bedingungen aufrufbar halten; sonst zerbricht an ihr Quelltext, der nur die Oberklasse kennt.
Das ist die praktische Fassung einer bekannten Regel: Überall, wo die Oberklasse erwartet wird, muss jede Unterklasse eingesetzt werden können, ohne dass etwas anders ausgeht.
Woran man eine schlechte Unterklasse erkennt
Daran, dass sie Geerbtes abschalten muss. Eine Methode, die in der Unterklasse nur noch einen Fehler wirft, ist das deutlichste Zeichen dafür, dass die Beziehung gar keine ist.
Dann stimmt die Behauptung nicht, die hinter jeder Vererbung steht: Die Unterklasse ist eine Art der Oberklasse. Wo sie das nicht ist, gehört die Gemeinsamkeit in eine eigene Klasse, die beide benutzen.
Wie tief Unterklassen gestapelt werden sollten
So flach wie möglich. Mit jeder Ebene wächst die Zahl der Stellen, an denen eine Methode überschrieben sein kann, und beim Lesen muss man sie alle durchgehen.
Zwei Ebenen reichen für die meisten Fälle. Wo mehr entsteht, bildet die Kette oft die Entstehungsgeschichte des Programms ab und nicht den Gegenstand, um den es geht.