[问题] self用法

楼主: angelina877 (牛牛)   2015-11-03 21:36:48
code
@implementation Dog
- (NSString*) bark {
return @"Woof!";
}
- (NSString*) speak {
return [self bark];
}
@end
@implementation Basenji : Dog
- (NSString*) bark {
return @"";
}
@end
Basenji* b = [Basenji new];
NSString* s = [b speak];
1.这样是呼叫Basenji class的bark method ,还是呼叫Dog class的bark method
2.为什么我编译后是出现Program ended with exit code: 0
而不是字串?
作者: darktt (小朱)   2015-11-03 21:49:00
理论上是Basenji的bark,不过为什么会出现错误就不明了了建议描述一下你是怎么运行它的
楼主: angelina877 (牛牛)   2015-11-03 21:53:00
为什么是Basenji的bark??
作者: darktt (小朱)   2015-11-03 22:02:00
self指的是这个instance,另外你override bark了,那bark的method指标会指向Basenji class[b speak]->[b bark](不管有没有override)没有就会得到Woof,有就会得到123另外,你得不到东西是正常的,因为这个程式在运行完毕时会马上终止,所以看不到任何东西想要印出资讯的话请用NSLog
作者: yr (Sooner Born Sooner Bred)   2015-11-03 22:31:00
但是你没有把它印出来啊....
作者: Obama19 (^_^)   2015-11-04 11:29:00
设断点用lldb印 你这边猜要猜到民国几年
作者: tom19830924 (Tom Hsu)   2015-11-04 14:12:00
啊不就继承 先去看看物件导向的继承在说啥啊
作者: powerwolf543 (NixonShin)   2015-11-09 00:18:00
就override method了啊
楼主: angelina877 (牛牛)   2015-11-11 22:12:00
懂了 谢谢大家

Links booklink

Contact Us: admin [ a t ] ucptt.com