2011年11月10日木曜日

継承について

クラスの機能を受け継いで新しい機能をつけたしたクラスを簡単につくることができます。
クラスの機能を受け継ぐことを継承といいます。

クラスA→クラスB(Aの機能にメソッドを一個追加)→クラスD(A+Bの機能)
→クラスC(Aの機能に変数とメソッドを追加)

クラスAのインスタンス変数名やメソッド名はBでもCでもそのままつかえます。
さらにクラスBからクラスDのように機能をどんどん継承して自由に機能を利用することができます。

継承する元のクラスをスーパークラスと言い、継承して新しく作ったクラスはサブクラスといいます。

iPhone開発の場合、全ての大本のクラスはNSObjectsというクラスなので
特段継承するクラスを作っていない場合などはNSObjectsを継承させる。

クラスを継承する場合のクラスの書き方
@interface newclass : NSObjects または継承するクラス名(スーパークラス)
{
インスタンス変数;
}
-メソッド
@end;

継承とメソッドのオーバーライドについて
クラスA
クラスB
クラスC
の3つのクラスがあったとして、A→B→Cという感じで継承していた時
クラスAにはa b cの3つのメソッドが定義されているとする。
クラスBでbメソッドの定義を書き換えたら、クラスCで継承されたとき書き換えられたbメソッドをつかう。
他に書き換えられてない場合、大本のAのメソッドが継承され、使われる。
☆クラスBで書き換えたbメソッドではなく、スーパークラス(クラスA)の書き換え前のbメソッドを使いたい場合、superというものに対してメソッドを引数にして呼び出すとスーパークラスのメソッドが呼ばれる。
例)
[b]→自分で書き換えたメソッドが呼ばれる
[super b]→スーパークラスのbが呼ばれる

☆イニシャライザについて
インスタンス変数の初期化、サブクラスで初期化を行う場合
-(id)init
{
self = [super init];
if(self =! nil){
year = @"";
//初期化するコードが入る
}
return self;
}

No response to “継承について”

Leave a Reply