Hallo zusammen,
ich bin im Buch auf Seite 204/205 und habe eine Frage.
Ich hab' eine Seite weiter vorn aufgehört zu lesen und erst einmal versucht die Subklasse Guitar selbst zu implementieren. Das ist mir auch gelungen.
Als ich dann weitergelesen habe, war ich etwas überrascht, dass man offensichtlich eine eigene Methode für die Objekterzeugung benötigt, obwohl die doch (fast) identisch ist mit der entsprechenden Methode der Superklasse Instrument und von dieser geerbt werden kann.
Es hat ja auch ohne diese Objekterzeugungs-Methode funktioniert (allerdings kommt beim build eine Warnung). Es wurde mit folgendem Code auch ein Objekt der Klasse "Guitar" erstellt und nicht etwa eins, der Klasse "Instrument".
Verwendet wurde dabei offensichtlich +instrumentWithName: der Klasse Instrument.
Meine Fragen lauten:
1. Warum benötigt man für die Subklasse eine eigene Methode zur Objekterzeugung, selbst wenn diese im Wesentlichen identisch ist, mit der der Basisklasse.
2. Was genau bedeutet die Warnung "assignment from distinct Object-C type"? (Diese erscheint, wenn man in der Klasse Guitar o.g. Methode nicht implementiert.)
Danke im Voraus und Gruß
D.Mon
Edit:
Habe gerade bemerkt, dass noch nicht einmal die Warnung kommt, wenn ich anstelle von
Guitar *aGuitar;
schreibe
Instrument *aGuitar;
ich bin im Buch auf Seite 204/205 und habe eine Frage.
Ich hab' eine Seite weiter vorn aufgehört zu lesen und erst einmal versucht die Subklasse Guitar selbst zu implementieren. Das ist mir auch gelungen.
Als ich dann weitergelesen habe, war ich etwas überrascht, dass man offensichtlich eine eigene Methode für die Objekterzeugung benötigt, obwohl die doch (fast) identisch ist mit der entsprechenden Methode der Superklasse Instrument und von dieser geerbt werden kann.
Es hat ja auch ohne diese Objekterzeugungs-Methode funktioniert (allerdings kommt beim build eine Warnung). Es wurde mit folgendem Code auch ein Objekt der Klasse "Guitar" erstellt und nicht etwa eins, der Klasse "Instrument".
Verwendet wurde dabei offensichtlich +instrumentWithName: der Klasse Instrument.
Meine Fragen lauten:
1. Warum benötigt man für die Subklasse eine eigene Methode zur Objekterzeugung, selbst wenn diese im Wesentlichen identisch ist, mit der der Basisklasse.
2. Was genau bedeutet die Warnung "assignment from distinct Object-C type"? (Diese erscheint, wenn man in der Klasse Guitar o.g. Methode nicht implementiert.)
Danke im Voraus und Gruß
D.Mon
Edit:
Habe gerade bemerkt, dass noch nicht einmal die Warnung kommt, wenn ich anstelle von
Guitar *aGuitar;
schreibe
Instrument *aGuitar;
Habe Mut, Dich Deines eigenen Verstandes zu bedienen.
(Immanuel Kant)
(Immanuel Kant)