💡 1. Vererbung & Abstrakte Basisklassen
Abstrakte Klassen definieren gemeinsame Grundstrukturen, können aber nicht direkt instanziiert werden. Unterklassen überschreiben Methoden mit `@Override`:
public abstract class Konto {
protected String iban;
protected double saldo;
public Konto(String iban, double saldo) {
this.iban = iban;
this.saldo = saldo;
}
// Abstrakte Methode (muss von Unterklasse implementiert werden):
public abstract double berechneZinsen();
public void buchen(double betrag) {
this.saldo += betrag;
}
}
public class Sparkonto extends Konto {
private double zinssatz;
public Sparkonto(String iban, double saldo, double zinssatz) {
super(iban, saldo); // Aufruf Elternkonstruktor
this.zinssatz = zinssatz;
}
@Override
public double berechneZinsen() {
return this.saldo * (this.zinssatz / 100.0);
}
}
Ein Kind erbt grundlegende Merkmale der Eltern (Blutgruppe, Augenfarbe), entwickelt aber eigene Talente. In Java erbt die Unterklasse Felder und Methoden und spezialisiert sie.
⚡ 2. Quick-Cheat-Sheet
| Schlüsselwort | Wirkung auf Klassen | Wirkung auf Methoden |
|---|---|---|
abstract | Kann nicht instanziiert werden | Hat keinen Rumpf, MUSS überschrieben werden |
final | Darf nicht beerbt werden | Darf nicht überschrieben werden |
super | Ruft Elternkonstruktor auf | Ruft Elternmethode auf (super.buchen()) |
@Override | Compiler-Prüfannotation | Stellt sicher, dass echte Elternmethode existiert |
⚠️ 3. Häufige Stolperfallen (Gotchas & Anti-Patterns)
Hat die Elternklasse keinen parameterlosen Konstruktor, MUSS die Unterklasse in Zeile 1 explizit super(args) aufrufen!
Schreibt man tostring() statt toString() ohne @Override, überschreibt man nichts und sucht stundenlang den Bug!
🧠 4. Diagnostischer Selbst-Check
Überprüfe dein Verständnis von Sprach-Features, Speicherverwaltung und Enterprise-Architektur, bevor du den Code in der Web-IDE schreibst.