Vererbung ist ein wichtiges Konzept der objektorientierten Programmierung. Dabei “vererbt” die Basis-Klasse ihre Attribute und Methoden an eine Sub-Klasse. In dieser können weitere Eigenschaften hinzukommen oder die der Basis-Klasse angepasst werden.
Um eine Sub-Klasse zu erstellen, müssen wir die Basis-Klasse in Klammern hinter die neue Sub-Klasse schreiben.
class subclass(Smiley):
pass
Der Konstruktor der Basis-Klasse wird ebenfalls in der der neuen Sub-Klasse aufgerufen, um ein Erben aller Eigenschaften zu ermoeglichen. Außerdem fügen wir der Sub-Klasse ein weiteres Attribut für eine zweite Farbe hinzu.
class subclass(Smiley):
def __init__(self, col,col2):
Smiley.__init__(self,col)
self.col2=col2
Anschliessend erstellen wir die Methode laugh
, die beim Betätigen der Leertaste einen lachenden Smiley erstellt:
def laugh(self, x_pos, y_pos, size_xy):
if keyPressed and key == ' ':
fill(self.col)
ellipse(x_pos, y_pos, size_xy, size_xy)
fill(0)
ellipse(x_pos - size_xy * .2, y_pos - size_xy * .12, size_xy * .2, size_xy * .2)
ellipse(x_pos + size_xy * .2, y_pos - size_xy * .12, size_xy * .2, size_xy * .2)
fill(self.col2)
arc(x_pos, y_pos, size_xy * .75, size_xy * .75, radians(25), radians(155),CHORD);
fill(self.col)
Um die neue Klasse zu Nutzen importieren wir sie ebenfalls.
from Smiley import Smiley, subclass
Subklasse=subclass('#f5f242','#0ffff0')
def setup():
size(200,200)
def draw():
Subklasse.paint(50,50,50)
Subklasse.laugh(50,50,50)
Führen wir den Code aus, stellen wir fest, dass die Sub-Klasse die Methode paint()
aus der Basis-Klasse übernommen hat.
Zwar nur bedingt aus unserem Beispiel abzuleiten, verspricht das Konzept der Vererbung einen strukturierten und modularen Code.