Objective-C用2个参数覆盖方法

时间:2014-09-09 11:21:22

标签: objective-c override

班B.h

@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类兴趣的值中打印总和。

1 个答案:

答案 0 :(得分:3)

这是非常基本的OOP内容。不是Obj-C。

无论如何,如果您希望C中的addNum1:andNum2:方法首先在B中运行该方法,那么就像这样创建它......

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

虽然它有点笨拙但命名约定已关闭,我不会以这种方式存储数据和其他许多东西。但这会做你想要的。