Zum Hauptinhalt springen

Vererbung

Bei der Modellierung von Klassen stellt man häufig fest, dass sich einige Klassen in Struktur und Verhalten ähneln. In solchen Fällen können die gemeinsamen Teile in einer allgemeineren Klasse zusammengefasst werden (Generalisierung). Umgekehrt lässt sich eine bestehende Klasse um zusätzliche Attribute und Methoden erweitern (Spezialisierung). Die Beziehung zwischen einer speziellen und einer allgemeinen Klasse nennt man Vererbung. Die spezielle Klasse heißt Unterklasse (Sub Class), die allgemeine Oberklasse (Super Class).

Implementieren von Vererbung

Vererbung wird mit dem Schlüsselwort extends realisiert. Attribute und Methoden der Oberklasse können mit protected als geschützt markiert werden, sodass Unterklassen darauf zugreifen können.

Computer.java (Auszug)
public class Computer {
...
protected Cpu cpu;
protected int memoryInGb;

public Computer(String description, Cpu cpu, int memoryInGb) {
this.description = description;
this.cpu = cpu;
this.memoryInGb = memoryInGb;
}
...
}
info

Im Konstruktor einer Unterklasse muss mit super(...) ein Konstruktor der Oberklasse aufgerufen werden.

Überschreiben von Methoden

Definiert eine Unterklasse eine Methode mit derselben Signatur wie die Oberklasse, überschreibt sie diese Methode und ersetzt damit ihre Implementierung. Die ursprüngliche Implementierung der Oberklasse kann bei Bedarf über super aufgerufen werden.

Computer.java (Auszug)
public class Computer {
...
public ArrayList<String> getSpecification() {
ArrayList<String> specification = new ArrayList<>();
specification.add("description: " + description);
specification.add("cpu: " + cpu);
specification.add("memoryInGb: " + memoryInGb);
return specification;
}
...
}

info

Die Annotation @Override sorgt bei fehlerhaftem Überschreiben der Methode für entsprechende Kompilierungsfehler.