Die neue Klasse Stapel enthält neue Methoden, die in doppeltverketteteListe nicht vorhanden sind. Jede Klassendefinition durch Vererbung ist eine Typerweiterung! Die Methoden der Oberklasse doppeltverketteteListe bleiben aber in der Unterklasse Stapel verfügbar, so dass es möglich ist, die unzulässigen Methoden weiterhin zu verwenden. Tatsächlich lautet also die Klassendefinition der Klasse Stapel :
public class Stapel extends doppeltVerketteteListe { public Stapel() { } public void push(Object o) { } public void pop() { } public Object aktuellesElement() { } public boolean istLeer() { } /* Folgende Methoden sind dennoch per Vererbung vorhanden: public void alleElementeLoeschen() public void zumAnfang() public void zumEnde() public Object naechstesElement() public Object vorherigesElement() public Object Vorschau() public void vorneEinfuegen(Object o) public void einfuegen(Object o) public Object aktuellesEntfernen() public int gibLänge() */ }
Die unzulässigen, in der Klasse markierten Methoden müssen daher so überschrieben werden, dass sie ohne Wirkung im Programm sind, wenn sie aufgerufen werden.
Die folgende "leere" Methode tritt in der Unterklasse Stapel an die Stelle der gleichnamigen Methode der Oberklasse. Sie hängt aber kein Element an den Stapel an, sondern tut "nichts"!
public void einfuegen(Object o) { //nichts tun }
Merke: Es gibt in einer objektorientierten
Programmiersprache
kein generell befriedigendes Konzept für Typ-Einschränkungen!
© Ralph-Erich Hildebrandt, 04. Februar 2005