...achso und Antoras, vllt hilft dir noch folgendes:
Ist dir eig. bewusst, WARUM du vererbst? Was willt du denn erreichen?
Du willst doch nur, dass du irgendwo im Programm einen Oberbegriff für ein Objekt
verwenden kannst, oder?
Du weisst du hast verschiedene Reifen-Typen, und jeden Reifen musst du zB
malen können, du musst Kollisionsabfragen darauf machen können, usw.
Du denkst jetzt spontan: Aha, Gemeinsamkeiten! Also Vererbung, und evtl noch
abstrakte Methoden.
Und genau das ist FALSCH. Denn was ist denn gemeinsam? Naja, wie ich sagte:
paint(), checkForCollision(), usw.
Das sind METHODEN. Das sind Features dieser Klasse, das ist das, was du mit einem
Reifen tun kannst.
Und dafür machst ein Interface, mit diesen Methoden.
Aber warum zum Teufel willst du es dir so schwer machen, wieso willst du
versuchen da irgendwie Gemeinsamekeiten in den ATTRIBUTEN der spezifischen
Klassen zu finden?
Was wäre mit nem Kühlschrank als Reifen? Oder einem Heuhaufen?
Warum nicht, ist einfach lustigen Fun-Racing Game.
Und nun? Kühlschrank und Kreis erben von der gleichen Klasse? Na dann mal
viel Spass.
Also verstehste? WArum schaffst du diese Abhängigkeit, du willst doch nur dass
man die gleichen Methoden aufrufen kann, damit du in der Reifen-Klasse
ein Überobjekt hast "ReifenPolygon", und das kannste malen, austauschen,
auf Kollision überprüfen, usw.
Aber kannste doch einfach nur wenn du diesen ganzen Klassen ein Interface
implementierst.
Und dann kann ein Kühlschrank nur die Attribute haben, die Sinn für einen
Kühlschrank machen, und Kreis KOMPLETT ANDERE.
Trotzdem kannste die paint-Methode in beiden implementieren, und weil sie
ein Interface implementieren, ist sichergestellt dass in der Reifen-Klasse
ein paint() immer reibungslos funktioniert.
Warum gemeinsame Attribut erzwingen, wenn doch nur die Methoden
gleich sind? Die MethodenNAMEN gleich sind! Lass doch eine jede Klasse die
Methode implementieren wie sie lustig ist.
...Vererbungwie gesagt erst dann, wenn du weisst: Ich habe jetzt UND AUCH IN ZUKUNFT (!)
ganz ganz sicher nur Objekte, die wirklich gleiche Attribute besitzen.
Dann kannste vererben. Aber wer kann schon in die Zukunft sehen...
Darum nimmt man Interfaces!
Ok?
edit:
Ich hab mir das mal auf Google-Books angeguckt. Da steht das gleiche drin, wie das was ich schon zwanzig mal in anderen Büchern gelesen hab. Das WIE verstehe ich auch ohne Probleme, nur das WARUM leuchtet mir nicht ein.
Und genau das zeigt das von mir empfohlene Buch (sicher nicht als einzigstes) sehr
schön auf.
Es zeigt dir ein Bsp wo einer anfängt etwas mit Vererbung zu implementieren,
funktioniert wunderbar,
aber dann kommt plötzlich eine Änderung in der Spezfikation (siehe Kühlschränke als Reifen...)
und man kann das nicht mehr gerade biegen.
Also glaub nicht, dass dir das Buch nur das WIE aufzeigt. Die Bsp sind echt gut!
Willst du, dass ich dir das Bsp aus dem ersten Kapitel abtippe? Das verdeutlicht
nämlich eben genau das, was ich grad versuch zu sagen. Oder verstehste es jetzt?