iPhone:方法重写结果
我有如下方法覆盖。请忽略我写的方式,它可能不是完美的,只是为了样本。但我想知道,如果我像这样为变量“a”重写方法,输出会是什么 ->基类iPhone:方法重写结果,iphone,Iphone,我有如下方法覆盖。请忽略我写的方式,它可能不是完美的,只是为了样本。但我想知道,如果我像这样为变量“a”重写方法,输出会是什么 ->基类 @interface A { int a=15; } -(int) myFunction; @end ->派生类 @interface B : A { int a=10; } -(int) myFunction; @end 让图像“myFunction”返回“a”。因为,当我调用like时,它会进行方法重写 B bObj; bOb
@interface A
{
int a=15;
}
-(int) myFunction;
@end
->派生类
@interface B : A
{
int a=10;
}
-(int) myFunction;
@end
让图像“myFunction”返回“a”。因为,当我调用like时,它会进行方法重写
B bObj;
bObj.a = ?
输出10或15应该是什么?我假设您知道不能在这样的标题中声明变量,那里的初始化只是为了简单 类似地,您的
B bObj
尚未初始化,也不是指针
bObj.a
将返回10。[bObj myFunction]
也是如此。您已经重写了该方法,并告诉编译器忽略此方法以前的实现,使用新的实现
你能建议这项研究的结果是什么吗
A *obj = [[B alloc] init];
NSLog(@"%d", [obj myFunction]);
或者这个:
B *obj = [[A alloc] init];
NSLog(@"%d", [obj myFunction]);
如果子级和父级都将返回,则其方法将重写。。。但是,如果类A的myFunction:返回A,而类b的myFunction返回b,或者任何引用类型返回类型,它们具有相同的关系,这些类都表示父级和子级关系,那么这也被称为覆盖,这是一个非常混乱的答案。我很确定这也不正确。重写一个方法并提供与您实际使用的超类相同的实现(语法上)没有什么错。。我错把它放在那里了。。很抱歉但剩下的部分是非常清楚和正确的。。