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.

160 8 Objektorientierte Programmierung<br />

Abbildung 8.8: Darstellung des Polymorphismusprinzips im UML-Klassendiagramm<br />

Um auch im Rahmen der Vererbungshierarchie die in Unterklassen überschriebenen Methoden<br />

und Attribute (aus der Oberklasse) verwenden zu können, bietet Java den super-Bezug. Wird<br />

einem Methodenaufruf oder einem Attribut bei seiner Verwendung das Schlüsselwort super,<br />

getrennt durch einen Punkt, vorangestellt, also zum Beispiel super.a, wobei a das Attribut ist,<br />

wird die entsprechende Methode oder das entsprechende Attribut der direkten Oberklasse verwendet.<br />

Falls auf eine Methode oder ein Attribut einer indirekten Oberklasse Bezug genommen<br />

werden soll, wird super so häufig vorangestellt, wie es dem „Abstand der Oberklasse“ in der<br />

Klassenhierarchie entspricht, also zum Beispiel super.super.a.<br />

Wir illustrieren diese Konzepte nun an dem etwas „akademischen“ und nicht ganz einfachen<br />

Quellcode 8.6, dessen Klassenstruktur auch innerhalb der Abbildung 8.8 als UML-Diagramm<br />

dargestellt ist. Er besteht aus der Deklaration einer Klasse Studierende und einer Unterklasse<br />

hiervon, <strong>Informatik</strong>studierende. Ergänzend ist in der Abbildung 8.9 eine Testklasse zu sehen,<br />

in der die Klassen exemplarisch zur Anwendung kommen. Die jeweilige aus der Anweisung<br />

resultierende Bildschirmausgabe ist in den grauen Kästen angeführt.<br />

Bezüglich der Attribute beider Klassen fällt auf, dass die Variable studium in beiden Klassen<br />

deklariert ist. In dem Fall überschreibt das Attribut studium der Klasse <strong>Informatik</strong>studierende<br />

das namensgleiche Attribut der Oberklasse. Ersichtlich ist dieses auch an der Bildschirmausgabe<br />

in Abbildung 8.9 (s. Anweisung 1 und 2). Die Instanzvariable studium der Klasse<br />

Studierende liefert einen Wert von 0, entsprechend 9 der Klasse <strong>Informatik</strong>studierende.<br />

Innerhalb der Klasse <strong>Informatik</strong>studierende sind zwei Methoden mit dem gleichen Namen<br />

info definiert. Trotz der Namensgleichheit sind die beiden Methoden eindeutig aufgrund ihrer<br />

Übergabeparameter zu unterscheiden (s. Anweisung 3 innerhalb Abbildung 8.9). Eine Methode<br />

mit Namen info kann ohne Parameter aufgerufen werden, die zweite benötigt einen Parameter<br />

vom Typ boolean. Hier liegt die Situation des Überladens vor.<br />

Das Prinzip des Überladens von Methoden kann auch zwischen Ober- und Unterklasse stattfinden.<br />

In unserem Beispiel wird innerhalb der Klasse <strong>Informatik</strong>studierende durch die Methode<br />

„void info()“ die entsprechende Methode „void info(boolean lang)“ der Ober-

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!