next up previous contents
Next: 12.7 クリエータの継承引数 Up: 12. クラスの継承 Previous: 12.5 非束縛自己参照変数self

12.6 クリエータの呼び出し手順

クラスが継承されている場合、クリエータNewは、下記の手順で実行されます。

1.
最初にインスタンスを生成する。
2.
クラス継承階層をたどり、継承経路を探す。
3.
継承の再上位までたどると、そのクラスのNewを実行
4.
階層を逆に下りながら、各クラスのNewを実行

次のコードがあるとすると、


class Top {

private t ;
method New () { t = "top" ; }
}

class Middle : Top {
private m ;
method New () { m = "middle" ; }
}

class Bottom : Middle {
private b ;
method New () { b = "bottom" ; }
}

var anInstance ;
anInstance = Bottom->New () ;

ここで、Bottom->New() は、下記のような処理を行います。

1.
Bottomクラスのインスタンスを生成。
2.
Bottomクラスからクラスの継承階層をたどり、Topクラスに到達
3.
継承階層を逆順にたどって、各クラスのNew本体を実行
(a)
生成したインスタンスに対して、TopクラスのNew()本体を実行
(b)
生成したインスタンスに対して、MiddleクラスのNew()本体を実行
(c)
生成したインスタンスに対して、BottomクラスのNew()本体を実行
4.
生成したインスタンスを返す


next up previous contents
Next: 12.7 クリエータの継承引数 Up: 12. クラスの継承 Previous: 12.5 非束縛自己参照変数self
Tetsuo Ono
1998-11-05