2014-09-09 2 views
0

Class B.hObjective-C перекрывая метод с 2 аргументами

@interface ClassB : rndvzViewController { 
    int sum, num1, num2; 
} 

-(void)sumPrint; 
-(int)addNum1:(int)_num1 andNum2:(int)_num2; 

Класс B.m

-(int)addNum1:(int)_num1 andNum2:(int)_num2 
{ 
    num1 = _num1; 
    num2 = _num2; 

    return sum = num1 + num2; 
} 

-(void)sumPrint 
{ 
    NSLog(@"%d", sum); 
} 

класс C.h

@interface ClassC : ClassB 

@end 

Класс C.m

-(int)addNum1:(int)_num1 andNum2:(int)_num2 
{ 

    //[self addNum1:num1 andNum2:num2]; 
    int interest = sum*.05; 

    return interest; 
} 

Вызывающие методы:

ClassB* classB = [[ClassB alloc] init]; 
ClassC* classC = [[ClassC alloc] init]; 

[classB addNum1:12 andNum2:12]; 
classB.sumPrint; 
//[classC addNum1:12 andNum2:12]; 
classC.sumPrint; 

Выход: 2014-09-09 14: 07: 48,919 ClassA [38418: 60b] 24 2014-09-09 14: 07: 48,919 ClassA [38418: 60b] 0

Что я делаю неправильно, почему classC.sumPrint возвращает 0, я хочу, чтобы класс C печатал сумму из значений класса B * интереса.

ответ

3

Это очень простой материал ООП. Не совсем Obj-C.

Во всяком случае, если вы хотите метод addNum1:andNum2: в C для первого запуска метода в B, то создайте его, как это ...

- (int)addNum1:(int)_num1 andNum2:(int)_num2 
{ 
    return [super addNum1:_num1 andNum2:_num2] * 0.5; 
} 

Это немного неуклюжим, хотя и соглашение об именах выключен, и я Wouldn Хранить данные так и многое другое. Но это будет делать то, что вы хотите.

+0

спасибо и им жаль, что я просто практикую, я новичок. – suisied

+0

@suisied не извиняйтесь :) просто указывая на несколько вещей, на которые нужно смотреть. – Fogmeister

Смежные вопросы