Hoi,
hab ich dich jetzt richtig verstanden, du willst eine Klasse - die dir nicht gehört - erweitern. Direkt?
Exakt.
Die Vererbung wurde nicht umsonst erfunden ... ich denke nicht, dass du dein Vorhaben ohne Vererbung realisieren kannst.
Die Vererbung ist kein Allheilmittel. Die Vererbung ist oftmals sogar ein Code Smell.
Nicht umsonst gibt es Ansätze wie das Decorator Pattern: wenn ich eine bestimmte Funktionalität nachreichen möchte, dann möchte ich nicht zwingend 700 Unterklassen erstellen müssen.
Nehmen wir als Beispiel 'Balzac Coffee' (Ich mag 'Starbucks' einfach nicht...):
Ich kann mir ja für jede Kaffeesorte eine Subklasse von 'Kaffee' erstellen, die dann auch die Eigenarten des Kaffees hat.
Muss aber der Kaffee an sich wissen in welche Bechergröße er kommt? Muss der Kaffee an sich wissen, ob er ein Sahnetopping bekommt? Muss der Kaffee an sich wissen, ob ein Aromasirup in ihn gekippt wird?
Nein.
Also statt jeder Kaffeesorte diverse Größen mitgeben zu wollen (und dann bei der Einführung des XXXS Bechers für Neugeborene 700 Sourcedateien anfassen zu müssen), erstellt man sich einen Dekorateur, der den Kaffee um die jeweilige Größe erweitert. Oder um das Topping. Oder um das Aroma.
Java ist und bleibt nun mal streng typsicher, was auch seine Vorteile hat.
Das hat ja damit nichts zu tun.
Nur offenbar ist Java so starr, dass es nicht 'mal eben zur Laufzeit' Methoden an ein Objekt anheften kann.
(Objective-C kann. Objective-C kann noch ganz andere Dinge. Objekten zur Laufzeit die Klasse wegreißen, Objekten eine andere Klasse unterjubeln, Objekte einer Klasse durch Objekte einer anderen Klasse ersetzen…)
Ich werde dann mal ein bisschen was mit dem Dekorierer versuchen und meine Ergebnisse hier posten.