Letzte Änderung:
20.03.2012
Albert Einstein
20.03.2012
Spruch des Tages
Die Welt wird nicht bedroht von den Menschen, die böse sind, sondern von denen, die das Böse zulassen.Albert Einstein
Vererbung
Bei der Vererbung wird eine neue Klasse auf Basis der abgeleiteten Klasse erzeugt. Die erbende Klasse, also die neue abgeleitete Klasse übernimmt dabei alle Eigenschaften und Methoden der vererbenden Klasse.
Die vererbende Klasse wird in der Literatur als Super-Klasse bezeichnet. In wenigen Fällen lesen Sie auch Begriffe, wie Basis-Klasse, übergeordnete Klasse oder ableitende Klasse. Für die erbende Klasse gibt es Begrifflichkeiten, wie abgeleitete Klasse, untergeordnete Klasse, Unter-Klasse oder Subklasse. Die Variablen der Superklasse können über die Objektreferenzvariable super gerufen werden. Hier gelten die selben Regeln, wie für this.
Syntax für das Erben von Klassen:
[Zugriffsmodifizierer] class Bezeichner extends Superklasse
Beispiel:
public class Auto extends Motor
Beispiel in einer kleinen Anwendung basierend auf dem folgenden UML-Klassen-Diagramm:
-----------Dateiname: Medikament.java-----Speicherort: c:\Java
import de.Pakete.*;
public class Medikament
{
public static void main(String[] args)
{
Zutaten VitaminC = new Zutaten();
VitaminC.Menge[0] = 9;
VitaminC.Wirkstoff[0] = "Ascorbinsaeure";
VitaminC.Wirkung[0] = "In seltenen Faellen passiert nichts";
VitaminC.Anzeige_Zutaten();
//2
Nebenwirkungen Risiko = new Nebenwirkungen();
Risiko.Anzeige_Wirkung(0);
}
}
-----------Dateiname: Zutaten.java-----Speicherort: c:\Java\de\Pakete
package de.Pakete;
public class Zutaten extends Nebenwirkungen
{
public String[] Wirkstoff = new String[10];
public int[] Menge = new int[10];
public void Anzeige_Zutaten()
{
int i;
for(i = 0; i < 10; i++)
{
if(this.Wirkstoff[i]!=null)
{
System.out.printf("\nZutat %d enthaelt ",i+1);
System.out.printf("%d mg ",this.Menge[i]);
System.out.printf("%s",this.Wirkstoff[i]);
super.Anzeige_Wirkung(i);
}
}
}
}
-----------Dateiname: Nebenwirkungen.java-----Speicherort: c:\Java\de\Pakete
package de.Pakete;
public class Nebenwirkungen
{
public String[] Wirkung = new String[10];
public void Anzeige_Wirkung(int Wert)
{
System.out.printf("\nt - Nebenwirkung: %s",this.Wirkung[Wert]);
}
}
Wenn Sie die main()-Klasse ab dem Kommentar //2 betrachten, werden Sie feststellen, dass die passive Super-Klasse plötzlich zu einer aktiven Klasse werden kann.