
Kapitel 7 - Fortsetzung
Was wir bisher noch nicht besprochen haben ist die Frage, ob eine vererbte Methode auch einfach entfernt werden kann, wenn ich das will? Die Antwort ist: nein! Aber Sie können eine vererbte Methode überschreiben. Nehmen Sie dazu das einfache Beispiel zu Beginn des Abschnittes her.
Programm 7.3
-----------------------------------------------------------------------------------------------------------------
#import <stdio.h>
#import <objc/Object.h>
@interface ErsteKlasse: Object
{
int x;
}
- (void) setzeZahl;
@end
@implementation ErsteKlasse;
- (void) setzeZahl
{
x = 10;
}
@end
@interface ZweiteKlasse: ErsteKlasse
- (void) druckeZahl;
- (void) setzeZahl;
@end
@implementation ZweiteKlasse;
- (void) setzeZahl
{
x = 20;
}
- (void) druckeZahl
{
printf ("Die Zahl x hat sich geändert von einem Wert von 10 auf %i\n", x);
}
@end
int main (int argc, char *argv[])
{
ZweiteKlasse *z = [[ZweiteKlasse alloc]init];
[z setzeZahl];
[z druckeZahl];
[z free];
return 0;
}
Programm 7.3 output
-----------------------------------------------------------------------------------------------------------------
Die Zahl x hat sich geändert von einem Wert von 10 auf 20
test79 has exited with status 0.
-----------------------------------------------------------------------------------------------------------------
Haben Sie den Unterschied zum ersten Programm bemerkt? Zuerst haben Sie die ErsteKlasse von der Superklasse Object gebildet. Dann haben Sie dieser Klasse die Methode setzeZahl hinzugefügt. Im Anschluss daran haben sie die neue Klasse ZweiteKlasse gebildet. Diese hat gemäß den Regeln der Vererbung die Methode setzeZahl von ErsteKlasse übernommen. Bei der Implementierung von ZweiteKlasse haben Sie - im Unterschied zu Programmbeispiel 7.1 - die Methode setzeZahl nicht einfach übernommen sondern durch eine "neue" Methode mit dem gleichen Methodennamen setzeZahl hinzugefügt. Dadurch haben Sie die Methode setzeZahl von ErsteKlasse durch die gleichnamige Methode setzteZahl in der Implementierung von ZweiteKlasse ersetzt, man spricht in einem solchen Fall von überschreiben.
weiter ---- Objective-C Index ---- Startseite----zurück
EINSTIEG
KAPITEL 1: SCHRITT FÜR SCHRITT ZUM ERSTEN PROGRAMM
KAPITEL 2: OBJEKTE, KLASSEN, INSTANZEN UND METHODEN
KAPITEL 3: DIE VERSCHIEDENEN DATENTYPEN
KAPITEL 4: DIE PROGRAMMSCHLEIFEN
KAPITEL 5: ENTSCHEIDE DICH, ENTWEDER ODER....
KAPITEL 6: UND NOCHMALS KLASSEN
KAPITEL 7: VERERBUNG
KAPITEL 8: POLYMORPHISMUS, DYNASCHISCHE TYPISIERUNG UND DYNAMISCHES BINDEN
KAPITEL 9: NOCH MEHR DATENTYPEN UND VARIABLEN
KAPITEL 10: CATEGORIES, POSING AND PROTOCOL
KAPITEL 11: DER PRÄPROZESSOR