Overloading, Overriding, Runtime Type and Object Orientation


State the benefits of encapsulation in object oriented design and write code that implements tightly encapsulated classes and the relationships "is a" and "has a".

"is a" oder auf deutsch "ist ein" bedeutet, dass eine Klasse von einer anderen Klasse vererbt. In der objektorientierten Programmierung werden die Klassen nicht komplett neu geschrieben, sondern von einer existierenden Klasse abgeleitet. Die Beziehung zwischen den Klassen heisst dann, "B ist ein A". Die neue Klasse B erbt also alle Eigenschaften der Klasse A. Beispiel:
Ein Haus ist ein Gebäude, wobei Gebäude die Superklasse von Haus ist, umgekehrt erbt Haus von Gebäude.
"has a" oder auf deutsch "hat ein" bedeutet, die Klasse hat die Membervariablen, wie z.B. ein Haus hat Fenster.

nach oben

Write code to invoke overridden or overloaded methods and parental or overloaded constructors; and describe the effect of invoking these methods.

Überschreiben Overriding
Überschreiben einer Methode bedeutet, die Wiederverwendung einer Methode in einer Klassenhierarchie. Hierbei besteht die Methode in der neuen Klasse genau aus der gleichen Signatur, wie in der Superklasse. Unter der Signatur versteht man den Namen, die Parameterliste und den Rückgabewert.
Wenn die neue Methode den gleichen Namen und die gleiche Parameterliste hat, aber anderen Rückgabewert hat, so erscheint Compilerfehler. Es ist erlaubt den gleichen Namen, aber andere Parameterliste zu haben. Es ist aber keine Überschreibung.
Bei der überschriebenen Methode kann der Zugriff nicht weiter eingeschränkt werden, als bei der überschriebenen Methode. Manchmal möchte man direkt die Methode in der Superklasse aufrufen. Dazu benutzt man die Schreibweise super.methodenName(). Es kann dabei nur die Methode in der Superklasse aufgerufen werden. Die Schreibweise super.super.methodenName() ist nicht erlaubt.
Die Methode wird zur Laufzeit aufgelöst.
Statische Methoden können nicht überschrieben werden. Eine Methode, die nicht-static ist, kann nicht als static überschrieben werden.
Eine Methode kann nur einmal überschrieben werden, damit kann eine Methode mit der gleichen Signatur nur einmal existieren.
Überschreibende Methoden können nicht mehr kontrollierte Exceptions erzeugen als die überschriebene Methode.
Möchte man, dass eine Methode nicht überschrieben wird, so wird diese Methode final deklariert.

Überladen Overloading
Beim Überladen wird eine Methode in der gleichen Klasse wiederbenutzt. Hierbei muss die neue Methode den gleichen Namen, aber andere Parameterliste haben. Wenn die neue Methode den gleichen Namen und die gleiche Parameterliste, aber anderen Rückgabewert hat, so kommt Compilerfehler.
Es gibt keine Einschränkungen bezüglich des Zugriffsmodifikators.
Die Methoden werden zur Kompilierzeit aufgelöst.
Es gibt keine Begrenzung bezüglich der Anzahl der überladenen Methoden.
Es gibt auch keine Einschränkungen bezüglich der Exceptions.

Konstruktoren
Konstruktoren können, wie die Methoden, überladen werden. Überladene Konstrutoren haben verschiedene Parameterliste. Der Name des Konstruktors wird vorgegeben durch den Namen der Klasse. Konstruktoren haben auch keinen Rückgabewert.

Elternkonstruktoren Parental Constructors
Jeder Konstruktor ruft zuerst den Konstruktor der Superklasse auf. Dieser ruft ebenfalls den Konstruktor der Superklasse auf usw. bis zur höchsten Ebene der Hierarchie. Wenn kein Konstruktor explizit definiert wurde, so erzeugt Java den Defaultkonstruktor. Wenn also der Konstruktor einer Klasse aufgerufen wird, so wird zuerst der Konstruktor der obersten Ebene ausgeführt und danach der Reihe nach, bis zur Ebene, wo unser erster Konstruktor ist.

nach oben

Write code to construct instances of any concrete class including normal top level classes and nested classes.

Dieser Teil wurde im Abschnitt "Declaration and Acces Control" ausführlich beschrieben.

Valid XHTML 1.1! Valid CSS!