1

次のような親の init メソッドがあるとします。

- (id)initWithValue:(int)val name:(NSString *)n 
{
    value = val;
    name = n;
}

そして、次のようなinitを持つ子クラス:

- (id)initWithAge:(int)a
{
    age = a;
}

次のことを行う方法はありますか?

[Child initWithAge:10 value:12 name:@"Sam"];

age は子の init メソッドに送られ、「値」と「名前」は親メソッドに送られますか? それとも、すべての子が期待するすべての引数を期待し、[super init] を使用して親に渡す必要がありますか??

4

2 に答える 2

3
- (id)initWithAge:(int)a value:(int)val name:(NSString *)n
{
    self = [super initWithValue:val name:n];
    if(self)
    {
        age = a;
    }
    return self;
}
于 2013-02-19T03:54:34.793 に答える
0

ではChild、宣言する必要がありますinitWithAge: value: name:。あなたの側で何らかの作業をしなければ、明示的に「親に行く」メソッドは何もありません。

Child で amethod を宣言します。

-(id)initWithAge:(int)age value:(iint)value name:(NSString*)name {
    if ( (self = [super initWithValue:value name:name]) ) {
        _age = age; // assuming you an ivar '_age'
    }
     return self;
}

特定のものをスーパークラスに渡すことができますが、それが期待しているものだけで、何もメソッドを作成しません。

継承ポリモーフィズムについて読み、自己とは何かを理解することが重要です。

于 2013-02-19T03:57:22.210 に答える