Vererbung (engl. inheritance) im engeren Sinne bedeutet, dass eine Klasse Programmteile von einer anderen übernimmt.
Die erbende Klasse heißt Subklasse, die vererbende Klasse heißt Superklasse.
In Java sind die ererbten Programmteile Attribute, Methoden und geschachtelte Klassen, nicht vererbt werden Klassenattribute, Klassenmethoden und Konstruktoren.
In Java ist die Subklasse immer ein Subtyp des Typs der Superklasse.
Vererbung unterstützt Spezialisierung durch:
Hinzufügen von Attributen (Zustandserweiterung)
Hinzufügen von Methoden (Erweiterung der Funktionalität)
Anpassen, Erweitern bzw. Reimplementieren von Supertyp-Methoden (Anpassen der Funktionalität)
In Verbindung mit Subtyping ist Vererbung:
ein sehr mächtiger Strukturierungsmechanismus,
der die Entwicklung offener Programme unterstützt
und Wartbarkeit und Lesbarkeit verbessert (bei geeignetem Einsatz).