FB18 - Das Forum für Informatik

fb18.de / Bachelorstudieng / PM Praktische Informatik

SE 2 - Vererbung etc

SE 2 - Vererbung etc 2007-07-22 14:50
Anonymer User
Hi,

wäre jemand so nett und würde mir nochmal genau folgende Begriffe erklären? Die werden mir aus dem Skript nicht ganz klar..

1. Subtyping
2. Typ-Hierarchie
3. Typ-Abstraktion
4. Implementationsvererbung (Zusammenhang zu den anderen Punkten?)

Wie lässt sich das alles zueinander zuordnen und wo ist der Unterschied zu Implementationsvererbung?

Also unter Typ-Hierarchien verstehe ich sowas wie Collection -> List/Map. Aber ist das nicht auch schon Implementationsvererbung? Und Subtyping sowieso, oder?

Danke schonmal.

RE: SE 2 - Vererbung etc 2007-07-22 15:15
Fred
Ich sage mal was zu den Punkten 1 und 4.

1. Subtyping
4. Implementationsvererbung

[…] ist das nicht auch schon Implementationsvererbung? Und Subtyping sowieso, oder?
Subtyping hat mit Implementationsvererbung gar nichts zu tun. Du stellst mit Subtyping eine Beziehung auf Typ-Ebene her. (Ein Typ ist eine Wertemenge mit dazugehörenden Operationen). Student is-a Person. Das ist für Polymorphie interessant: überall, wo eine Person verlangt wird, kannst Du einen Studenten angeben.

Der Sinn von Implementationsvererbung ist die Vermeidung von Code-Redundanz. Wenn Du mehrere Klassen schreibst, in denen ähnlicher Code vorkommt, dann kannst Du diesen in eine gemeinsame abstrakte Basisklasse packen und die anderen Klassen davon erben lassen. Dann hast Du den Code nur noch einmal vorliegen. Beispiel: AbstractList

Ausschnitt aus der Klasse AbstractList, schau Dir mal die zweite Kommentarzeile an:
/**
* This class provides a skeletal implementation of the List interface
* to minimize the effort required to implement this interface
* backed by a "random access" data store (such as an array).
*/
public abstract class AbstractList

Als Abgrenzung zum Subtyping sei angemerkt, dass keine einzige Methode aus der Java-Bibliothek eine AbstractList als Parameter fordert [28]