Vererbung in Java
Was ist Vererbung?
Vererbung ist ein Mechanismus in Java, der es ermöglicht, eine Klasse von einer anderen Klasse abzuleiten, das heißt die abgeleitete Klasse (oder Unterklasse/Kindklasse) übernimmt alle Eigenschaften und alle Methoden der Basisklasse (oder Oberklasse/Elternklasse/Superklasse) und kann diese um neue Funktionalitäten erweitern oder alte Methoden überschreiben.
Warum Vererbung verwenden?
- Code-Wiederverwendung: Gemeinsame Funktionalität wird in der Basisklasse definiert und von mehreren Kindklassen wiederverwendet. Diese Methoden müssen also nur einmal programmiert werden, anstatt mehrmals!
- Erweiterbarkeit: Kindklassen können neue Eigenschaften und Methoden hinzufügen.
- Flexibilität: Methoden der Basisklasse können in den Kindklassen überschrieben werden.
- Natürliche Ordnung: Verwendet man Vererbung richtig, dass die Kindklassen die Basisklassen erweitern, gliedern sich die Klassen entsprechend ihrer natürlichen Ordnung.
Grundstruktur der Vererbung
Die Schlüsselwörter extends und super werden verwendet, um Vererbung umzusetzen.
public class Elternklasse {
// Eigenschaften und Methoden
}
public class Kindklasse extends Elternklasse {
// Zusätzliche Eigenschaften und Methoden
}
Beispiel: Vererbung in Java
Hier ist ein Beispiel mit einer Basisklasse Fahrzeug und einer abgeleiteten Klasse Auto:
public class Fahrzeug {
String marke; // Achtung: private Attribute sind auch von Kindklassen aus nicht zugreifbar!
public Fahrzeug(String marke) {
this.marke = marke;
}
public void starteMotor() {
System.out.println("Der Motor des Fahrzeugs wird gestartet.");
}
}
public class Auto extends Fahrzeug {
private int anzahlTueren;
public Auto(String marke, int anzahlTueren) {
super(marke); // Ruft den Konstruktor der Elternklasse auf
this.anzahlTueren = anzahlTueren;
}
@Override
public void starteMotor() {
System.out.println("Der Motor des Autos wird gestartet.");
}
public void zeigeInfo() {
System.out.println("Marke: " + marke);
System.out.println("Anzahl Türen: " + anzahlTueren);
}
}
Verwendung im Hauptprogramm:
Auto meinAuto = new Auto("BMW", 4);
meinAuto.starteMotor(); // Überschriebene Methode wird aufgerufen
meinAuto.zeigeInfo(); // Methode der Kindklasse
Wichtige Schlüsselwörter
- extends: Wird verwendet, um von einer anderen Klasse zu erben.
- super: Ruft Konstruktoren oder Methoden der Elternklasse auf.
- @Override: Markiert Methoden, die in der Kindklasse überschrieben werden.
Begrenzungen der Vererbung
Java unterstützt nur einfache Vererbung (eine Klasse kann nur von einer anderen Klasse erben). Eine Mehrfachvererbung ist nicht möglich!
Zusammenfassung
- Vererbung ermöglicht es einer Klasse, die Eigenschaften und Methoden einer anderen Klasse zu übernehmen.
- Die Kindklasse kann weitere Methoden hinzufügen (erweitern) oder bereits in der Basisklasse vorhandene Methoden überschreiben.
- Die Vererbung in Java wird mit
extendsundsuperimplementiert. - Vererbung fördert die Wiederverwendbarkeit und Erweiterbarkeit des Codes.