next up previous contents
Next: 12.2 継承メンバの参照 Up: 12. クラスの継承 Previous: 12. クラスの継承

12.1 クラス継承の定義

クラス継承の例を次に示します。


class Point {

public x, y ;
method New (x0, y0) { x = x0 ; y = y0 }
method Set (x0, y0) { x = x0 ; y = y0 }
method Move(dx, dy) { x += dx ; y += dy }
}

class MovingPoint : Point {
public vx, vy ;
method SetVelocity (dx, dy) { vx = dx; vy = dy } ;
method MoveOneStep () { x += dx ; y += dy }
}

この例の場合、MovingPointクラスは、Pointクラスに基づいて定義されていま す。これを示しているのが、

class MovingPoint : Point { ....

の部分です。この宣言によって、MovingPointクラスは、Pointクラスに基づい ていることを宣言しています。

MovingPointクラスは、Pointクラスのメンバ変数、メソッドをすべて引き 継ぎ、その上にMovingPointクラスを特徴づけるメンバ、メソッドが定義され ています。

この時、Pointクラスを、MovingPointクラスのスーパークラス、MovingPoint クラスをPointクラスのサブクラスといいます。

MovingPointクラスのMoveOneStepメソッドで参照されているx, yは、Pointク ラスで定義されたメンバです。

上記のクラス定義があるとき、


var aMovingPoint = new MovingPoint ;

aMovingPoint->Set(10, 10) ;

このメソッド呼び出しコードによって、PointクラスのSetメソッドが呼び出さ れ、これによって、Pointクラスで定義されたメンバ x, y にデータがセット されます。

また、下記の式によって、Pointクラスで定義されるpublicメンバ x, y に値を代入することができます。


aMovingPoint->x = 10 ;

aMovingPoint->y = 20 ;

サブクラスのメソッド/秘伝からは、スーパークラスのどのメンバアクセスで きます。つまり、サブクラスからなら、スーパークラスのpublic, private,static,method,hidenのいずれも利用すること ができます12.1


next up previous contents
Next: 12.2 継承メンバの参照 Up: 12. クラスの継承 Previous: 12. クラスの継承
Tetsuo Ono
1998-11-05