Program 8.8
// Extension of instance variables
#import <Foundation/Foundation.h>
// ClassA declaration and definition
@interface ClassA : NSObject
{
int x;
}
-(void) initVar;
@end
@implementation ClassA
-(void) initVar
{
x = 100;
}
@end
// ClassB declaration and definition
@interface ClassB : ClassA
{
int y;
}
-(void) initVar;
-(void) printVar;
@end
@implementation ClassB
-(void) initVar
{
x = 200;
y = 300;
}
-(void) printVar
{
NSLog (@"x = %i", x);
NSLog (@"y = %i", y);
}
@end
int main (int argc, char * argv[]) {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
ClassB *b = [[ClassB alloc] init];
[b initVar]; // uses overriding method in ClassB
[b printVar]; // reveal values of x and y;
[b release];
[pool drain];
return 0;
}