私はobjective-cを学び、いくつかの問題を解決しようとしています。クラス Creature を作成し、それを Dog クラスで拡張しました。
しかし、メソッドの状態を呼び出すと、返される結果は、Dog ではなくクリーチャー クラスから呼び出されたように見えます。
githubソースへのリンク
ps 他のバグやメモリ リーク ポイントを見つけた場合は、私に報告してください)
コード:
@interface Creature: NSObject
- (NSString *)state;
..
@implementation Creature
- (NSString *)state
{
return [_name stringByAppendingString: ([self isHungry] ? @" is hungry" : @" not hungry")];
}
// Dog
@interface Dog: Creature
..
@implementation Dog
- (NSString *)state
{
return [[super state] stringByAppendingString: ([self isFriendly] ? @" and friendly" : @" and unfriendly")];
}
そして呼び出し方法
Dog *creature = [Dog CreatureBorn];
NSLog([creature state]);