16.09.2017 Aufrufe

Vorkurs Informatik

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

8.3 Vererbung 149<br />

Der Aufruf des Oberklassenkonstruktors ist gegeben durch super(name, nummer, jahr,<br />

fach). Offensichtlich wird anstelle des Namens des Konstruktors der Oberklasse „super“ geschrieben,<br />

wohingegen die Parameterliste wie üblich aussieht und auch zu dem Konstruktor<br />

Bachelor(String name, int nummer, int jahr, String fach){<br />

super(name, nummer, jahr);<br />

studienfach = fach;<br />

}<br />

der Oberklasse passt. Auch hier wird wieder „super“ verwendet, da in diesem Fall der Konstruktor<br />

der Oberklasse Studierende aufgerufen wird. Ein Grund für die Verwendung des<br />

Schlüsselwortes „super“ anstelle des Konstruktornamens ist, dass die direkte Oberklasse einer<br />

Unterklasse eindeutig ist, sodass es überflüssig ist, ihn anzugeben. Hingegen kann auf die<br />

Parameterliste nicht verzichtet werden, da die entsprechenden Werte zu übergeben sind. In Abhängigkeit<br />

des Konstruktors der Oberklasse kann die Parameterliste auch leer sein. Ferner hilft<br />

sie in dem Fall, dass eine Oberklasse mehrere Konstruktoren hat, zu erkennen, welcher davon<br />

aufgerufen werden soll.<br />

Der Aufruf des Oberklassenkonstruktors im Konstruktor von Master sorgt dafür, dass die geerbten<br />

Attribute studname, matrikelnummer, geburtsjahr und studienfach die Werte<br />

bekommen, die in den aktuellen Parametern name, nummer, jahr und fach angegeben sind.<br />

Die darauf folgende Anweisung<br />

erststudienfach = erstfach;<br />

setzt dann noch den Wert des vierten Attributes der Klasse Master auf den Wert von erstfach.<br />

Der aufgerufene Oberklassenkonstruktor ist ein Konstruktor der Klasse Bachelor. Er wiederum<br />

setzt die Attribute studname, matrikelnummer, und geburtsjahr, indem er durch<br />

super(name, nummer, jahr);<br />

den Konstruktor der Oberklasse Studierende aufruft. Das Attribut studienfach setzt er direkt<br />

durch<br />

studienfach = fach;<br />

Auf diese Weise ergibt sich eine Aufrufkette von Konstruktoren, die mit dem Aufruf eines Konstruktors<br />

der Klasse an der Wurzel der Vererbungshierarchie endet – in diesem Fall mit einem<br />

Konstruktor der Klasse Studierende.<br />

An dem Beispiel wird die Sinnhaftigkeit der Begriffe Unterklasse und Oberklasse deutlich (s. Abbildung<br />

8.6). Die Studierenden, die eine Studienfachangabe enthalten (im vorliegenden Beispiel<br />

Lehramtsstudierende und Bachelorstudierende), speichern mehr Informationen als die allgemeinen<br />

Studierenden. Sie bilden also eine spezialisierte Teilmenge aller Studierenden. Abbildung<br />

8.6 verdeutlicht auch dieses Prinzip von Spezialisierung und Verallgemeinerung grafisch. Ist<br />

die Oberklasse Studierende verallgemeinert aufgebaut, enthält beispielsweise die Unterklasse<br />

Lehramt Ergänzungen, die sie als Spezialisierung der Oberklasse Studierende ausweist.

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!