Bei der Deklaration der kasten
-Klasse dürfte schon das Schlüsselwort
public
vor der Nennung der Basisklasse aufgefallen sein. Es handelt
sich hierbei um die Art der Ableitung. Völlig analog zur Deklaration der
Elemente und Methoden wird hierbei definiert, wie die Basisklasse nach außen
und bezüglich weiterer Ableitungen auftreten sollen. Bei einer
protected
-Ableitung werden public-
und protected
-Elemente
und -Methoden der Basisklasse zu protected
-Elementen und -Methoden,
so daß auf sie zwar in weiteren Ableitungen zugegriffen werden kann, nicht
aber von außen. Wird die Art der Ableitung nicht näher spezifiziert, so wird
standardmäßig public
abgeleitet.
Die public
-Ableitung sollte auch im Regelfall benutzt werden. Nur sie
realisiert eine wirkliche "ist ein"-Beziehung, wie sie in der
Methodik der Vererbung vorgesehen ist. Eine abgeleitete Klasse sollte um eine
Ableitung zu rechtfertigen immer eine "ist ein"-Beziehung haben.
So ist ein Kasten ein Grafikobjekt und die Ableitung macht Sinn.
Auch alle Eigenschaften werden vererbt.
Bei einer private
-Ableitung hingegen erscheinen die Methoden und Elemente
der Basisklasse nach außen hin nicht. Man kann nur indirekt auf diese
zugreifen. So ist dann auch im Grunde keine "ist ein"-Beziehung mehr
gegeben.
Meist wenn keine "ist ein"-Beziehung vorhanden ist, ist es angebrachter ein Objekt der Basisklasse als Element in eine neue Klasse aufzunehmen. So macht es z.B. keinen Sinn eine Personenklasse von einer Adresse abzuleiten. Eine Person "ist" keine Adresse, sondern sie "hat" eine. So sollte eine Adresse ein Element einer Person sein.