[問題] 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