NSObject sınıfından X alt sınıfını üretmek için aşağıdaki arayüz (interface) ve uygulama (implementation) kodları yazılır:
@interface X:NSObject
{
int a;
int b;
}
-(void) degerAta;
@end
@implementation X
-(void) degerAta;
{
a=50;
b=80;
}
@end
X sınıfının a ve b adlı iki adet üye değişkeni ve bunlara ilk değer atayan void tipindeki degerAta adlı bir metodu vardır.
Şimdi, X süper sınıfından Y alt sınıfını üretmek için aşağıdaki interface ve implementation kısımlarını yazmalıyız:
@interface Y:X
-(void) degerYaz;
-(void) kareYaz;
@end
@implementation Y
-(void) degerYaz
{
NSLog(@”a=%i”,a);
NSLog(@”b=%i”,b);
}
-(void) kareYaz;
{
NSLog(@”a*a=%i”,a*a);
NSLog(@”b*b=%i”,b*b);
}
@end
Y sınıfı degerYaz ve kareYaz adlı void tipi iki metoda sahiptir. Ayrıca X sınıfının a ve b değişkenleri ile degerAta metodunu da miras almıştır; yani Y için bu değişkenler ve metot tanımlı ve geçerlidir.
Şimdi de Y’yi üst sınıf alarak Z’yi tanımlayalım:
@interface Z:Y
-(void) kubTopYaz;
@end
@implementation Z
-(void) kubTopYaz
{
NSLog(@”a*a*a+b*b*b=%i”,a*a*a+b*b*b);
}
@end
Z, kubTopYaz adlı void tipi bir metoda sahiptir; aynı zamanda Y’nin sahip olduğu tüm değişken ve metotları da miras almıştır.
Son olarak bütün bu işlemleri bir komple Objective C programında bir araya getirelim:
#import <Foundation/Foundation.h>
@interface X:NSObject
{
int a;
int b;
}
-(void) degerAta;
@end
@implementation X
-(void) degerAta;
{
a=3;
b=5;
}
@end
@interface Y:X
-(void) degerYaz;
-(void) kareYaz;
@end
@implementation Y
-(void) degerYaz
{
NSLog(@"a=%i",a);
NSLog(@"b=%i",b);
}
-(void) kareYaz;
{
NSLog(@"a*a=%i",a*a);
NSLog(@"b*b=%i",b*b);
}
@end
@interface Z:Y
-(void) kubTopYaz;
@end
@implementation Z
-(void) kubTopYaz
{
NSLog(@"a*a*a+b*b*b=%i", a*a*a+b*b*b);
}
@end
int main(int argc,char * argv[])
{
NSAutoreleasePool *pool=[[NSAutoreleasePool alloc] init];
Z *z=[[Z alloc] init];
[z degerAta];
[z degerYaz];
[z kareYaz];
[z kubTopYaz];
[z release];
[pool drain];
return 0;
}
Not: Programın çalışabilmesi için XCode'da ARC modunun kapalı olduğundan emin olunuz.
PROGRAMIN ÇIKTISI:
a=3
b=5
a*a=9
b*b=25
a*a*a+b*b*b=152