Vererbung
Vererbung ist ein Mechanismus in der objektorientierten Programmierung, bei der eine bestehende Klasse,
um zusätzliche Eigenschaften und Verhaltensweisen in Form einer neuen Klasse erweitert wird.
Die neue Klasse enthält nun zusätzlich zu ihren eigenen Attribute und Methoden auch alle Attribute und Methoden der bestehenden Klasse. Die bestehende Klasse bezeichnet man als Oberklasse oder Basisklasse und die neue Klasse
als Unterklasse oder abgeleitete Klasse. Man sagt auch die Unterklasse erbt von der Oberklasse.

Mit dem Schlüsselwort „extends“ erbt die im folgenden Beispiel dargestellte Klasse „Unter“ von der Klasse „Ober“
Um ein Objekt der Unterklasse zu erzeugen , muss auch zwingend ein Objekt der Oberklasse erzeugt werden. Dabei aktiviert der Konstruktor der Unterklasse zuerst einen Konstruktor der Oberklasse. Dies geschieht z.B. mit dem Schlüsselwort „super“

 public class Ober
 {
    //Attribute
    //Methoden
 }

 public class Unter extends Ober
 {
    super();
    //weitere Attribute
    //weitere Methoden
 }

Eine Klasse „Unter“ sollte nur von einer Klasse „Ober“ erben wenn „Unter“ auch alle Eigenschaften von „Ober“ benötigt.
Durch die Wiederverwendung bereits existierender und bewährter Klassen , die eine Software ausmachen, wird eine gewisse Zuverlässigkeit der Software garantiert.
Voraussetzung für die häufige Wiederverwendung von Klassen ist deren möglichst große Allgemeingültigkeit.

Java unterstützt einfache Vererbung, d.h. eine Unterklasse kann nur genau von einer Oberklasse erben.
Mehrfachvererbung wie z.B. in C++ ist nicht möglich, jedoch gibt es den Mechanismus der Interfaces, die ein ähnliches Verhalten ermöglichen.
Umgekehrt jedoch können von einer Oberklasse beliebig viele Unterklassen erben.

Alle Klassen erben implizit von der Klasse Object.
Freitag, 28. Mai 2004, 15:24, von wurm | |comment

 
nich schlecht
schön geschrieben wurm ;)

... link  


... comment
 
Objekt der vererbenden Klasse im erbenden Objekt
Im Artikel heißt es, dass ein Objekt der Oberklasse erzeugt werden muss, wenn ein Objekt der erbenden Klasse erzeugt werden soll. Das ist etwas unklar ausgedrückt. Man könnte denken, der Programmierer muss zunächst explizit ein solches Objekt erzeugen, und das ist ja nicht so. Es verhält sich in Wirklichkeit so, dass ein Objekt aus einer erbenden Klasse alle Eigenschaften und Methoden der vererbenden Klasse besitzt. In sofern kann man davon sprechen, dass es quasi als Teil von sich selbst das Objekt der vererbenden Klasse beinhaltet. Und in der Tat wird dies deutlich, bei der Betrachtung der Ausführung der Konstruktoren:
Bevor der Konstruktor der erbenden Klasse ausgeführt wird, wird implizit der Konstruktor der vererbenden Klasse ausgeführt. Ist der Standardkonstruktor der vererbenden Klasse überschrieben (also nicht existent), so muss einer der Nicht-Standard-Konstruktoren der vererbenden Klasse im Konstruktor der erbenden Klasse in der ersten Anweisung ausgeführt werden. Der Konstruktor der vererbenden Klasse heißt "super()";

... link  


... comment