班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类兴趣的值中打印总和。
答案 0 :(得分:3)
这是非常基本的OOP内容。不是Obj-C。
无论如何,如果您希望C中的addNum1:andNum2:
方法首先在B中运行该方法,那么就像这样创建它......
- (int)addNum1:(int)_num1 andNum2:(int)_num2
{
return [super addNum1:_num1 andNum2:_num2] * 0.5;
}
虽然它有点笨拙但命名约定已关闭,我不会以这种方式存储数据和其他许多东西。但这会做你想要的。