////////////////////////////// //ex4 demonstrates: // //class initializer / multiple class initializers // //A class initializer is sort of like a constuctor although in Java and C++ a constuctor // //self keyword // //super keyword // // ////////////////////////////// #include <Foundation/Foundation.h> @interface MyClass: NSObject { int num1; int num2; } -(MyClass*) initWithNum1: (int) n1 andNum2: (int) n2; -(MyClass*) initWithJustNum1: (int) n1; -(int) Num1; @end @implementation MyClass -(MyClass*) initWithNum1: (int) n1 andNum2: (int) n2 { //[super init] initializes the super class (in this case NSObject). //If the superclass returns nil, the method skips initialization and returns that value to its caller. if ( self = [super init]) { num1 = n1; num2 = n2; } return self; } -(MyClass*) initWithJustNum1: (int) n1 { if ( self = [super init]) { num1 = n1; } return self; } -(int) Num1 { return num1; } -(int) Num2 { return num2; } @end int main(void) { MyClass* instance1 = [[MyClass alloc] initWithNum1: 111 andNum2: 222]; printf("num1=%i num2=%i \n\r", [instance1 Num1], [instance1 Num2]); MyClass* instance2 = [[MyClass alloc] initWithJustNum1: 333]; ; printf("num1=%i num2=%i \n\r", [instance2 Num1], [instance2 Num2]); return 0; } |