ex4.m

//////////////////////////////
//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;
}

Comments