#include #include #include @interface Hello : NSObject + (instancetype)new; - (void)sayHello; @end @implementation Hello + (instancetype)new { return [[self alloc] init]; } - (void)sayHello { printf("Hello from Objective-C!\n"); } @end @interface ExtendedHello: Hello - (void)sayHello; - (void)baldNiko; @end @implementation ExtendedHello - (void)baldNiko { printf("67 67 bald niko 67\n"); } - (void)sayHello { [super sayHello]; [self baldNiko]; } @end @interface DoubleExtendedHello: ExtendedHello - (void)baldNiko; @end @implementation DoubleExtendedHello - (void)baldNiko { printf("bald niko with CHEESE !!!\n"); } @end @interface Player : NSObject { int x; int y; NSString *name; } - (instancetype)init; - (void)setX:(int)x; - (void)setY:(int)y; - (void)setName:(NSString *)name; - (void)sayHi; @end @implementation Player - (instancetype)init { self = [super init]; if (self) { x = 0; y = 0; name = @"Player"; } return self; } - (void)setX:(int)val { x = val; } - (void)setY:(int)val { y = val; } - (void)setName:(NSString *)val { name = val; } - (void)sayHi { printf("Hello, I'm %s, and I am at X: %d, Y: %d!\n", [name UTF8String], x, y); } @end int main(void) { Hello *hello = [Hello new]; [hello sayHello]; NSString *string = @"Test\n"; printf([string UTF8String]); ExtendedHello *ehello = [ExtendedHello new]; [ehello sayHello]; DoubleExtendedHello *dehello = [DoubleExtendedHello new]; [dehello sayHello]; Player *player = [Player new]; [player setName:@"John Hackclub"]; [player sayHi]; return 0; }