
Eine ganz wesentliche Eigenschaft von objektorientierten Programmiersprachen ist die Vererbung. Blicken wir nochmals zurück auf den Beginn des Programmes 2.1 aus dem zweiten Kapitel:
#import <stdio.h>
#import <objc/Object.h>
// ------- @interface Abschnitt ----------
@interface Bruch: Object
Der Interface Abschnitt beginnt damit, dass die Klasse Bruch von der Klasse Object abgeleitet wurde. Dabei wurde erwähnt dass Sie die ableitende Klasse (die Bruch Klasse) benennen können wie Sie wollen, die Ausgangsklasse können Sie nicht frei wählen und z.B. von Object zu Objekt umbenennen. Die Object Klasse wird Ihnen durch die Header Datei <objc/Object.h> zur Verfügung gestellt. Object ist die sogenannte Superklasse (im englischen auch als root class bezeichnet), da aus ihr alle anderen Klassen abgeleitet werden. Dabei werden die Methoden und Attribute der Superklasse Object auf die Subklasse Bruch übertragen. Der Subklasse (Bruch) können dann neue Methoden hinzugefügt werden. Die bereits vorhanden Methoden können direkt aufgerufen werden, das Einzige was man wissen muss, sind die verschiedenen Methoden die vererbt wurden. Neben den Begriffen der Super- und Subklasse verwendet man auch oft die Begriffe von Eltern- und Kindklassen.
Wenn wir nun weitergehen würden und von der Bruchklasse - die neue Methoden mit auf den Weg bekommen hat - abermals eine neue Klasse ableiten, z.B. die Klasse BruchA.:
@interface BruchA: Bruch
Dann enthält diese Klassen nun alle Methoden der Superklasse Object und der Elternklasse Bruch. Um vielleicht wieder aufs Handy zurückzukommen. Die Erstellung der Handy Klasse würde lauten:
@interface Handy: Object
Dann könnte man dem Handy die jeweiligen Methoden hinzufügen, die jedes Handy besitzen sollte (telefonieren, klingeln, sms,...). Daraus könnte man dann neue Klassen ableiten, z.B.:
@interface VideoHandy: Handy
welches die Fähigkeit hat, Filme aufzuzeichnen. Diese VideoHandy Klasse hat dann alle Methoden von der Object und von der Handy Klasse übernommen. Wenn Sie sich zurückerinnern an vorige Programmbeispiele, dann haben Sie eine neue Instanz mit dem jeweiligen Methodenaufruf allokiert und initialisiert:
meinBruch = [Bruch alloc];
meinBruch = [meinBruch init];
Die jeweiligen Methoden alloc und init haben sie zuvor im Interface- und Implementierungsabschnitt nicht programmiert. Sie waren also schon vorhanden als sie die neue Klasse Bruch gebildet haben. Die beiden Methoden alloc und init wurden von der Klasse NSObject auf die Bruch Klasse weitervererbt, weshalb Sie diese Methode nicht extra implementieren mussten. Wenn Sie wissen wollen, welche Methoden von der NSObject Klasse weitergegeben werden können Sie diese abrufen. Gehen Sie z.B. zurück ins "HalloWelt" Beispiel aus dem zweiten Kapitel. Öffnen Sie es erneut und wählen Sie in Xcode im Hauptmenü Project dann Class Browser. Sie können nun NSObject auswählen und die einzelnen Methoden, die NSObject besitzt im Fenster danben im Fenster Member betrachten. Im Internet können Sie die einzelnen Methoden der jeweiligen Klasse abrufen. Für NSObject siehe hier:
http://developer.apple.com/documentation/Cocoa/Reference/Foundation/Classes/NSObject
_Class/Reference/Reference.html#//apple_ref/occ/cl/NSObject
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