Wenn wir den Quellcode von einer Klasse haben, können wir den Code kopieren und so verändern, das er das tut was wir wollen.
Bei den prä-objektorientierten Sprachen war das die einzige Möglichkeit.
Aber es gibt damit zumindest zwei Probleme:
- die Dinge organisiert zu halten und
- die Erfordernis den ursprünglichen Code zu verstehen.
- Angenommen, wir haben Dutzende Klassen und, dass unser Programm weitere Dutzende Klassen benötigt, die auf den Ursprünglichen aufbauen. Am Ende werden wir viele Dutzende Quelldateien haben, die alle auf den anderen Quelldateien in unterschiedlicher Weise aufbauen.Ohne sorgfältige Planung werden wir in einem inkonsistenten, fehlerhaften und chaotischen Schlamassel enden.
- Angenommen, wir haben eine komplizierte Klasse, die im Wesentlichen das tut was wir wollen, aber wir brauchen etwas Zusätzliches. Wenn wir den Quellcode editieren, auch wenn wir nur eine kleine Änderung vornehmen, riskieren wir es, dass etwas schief geht. Also müssen wir den ursprünglichen Code studieren, um sicher zu sein, dass unsere Änderungen korrekt sind. Das könnte nicht leicht sein.
Der automatische Vererbungsmechanismus von Java löst diese beiden Probleme.