welcome: please sign in

2010-11-30 13:41:15時点のリビジョン11

メッセージを消す
location: 継承の例

継承の例

前回までに作成した Chainクラス を継承して Cardクラス を作ります。

Cardクラスのインスタンスは3つの変数(属性)を持ちます。

コンストラクタとshowメソッドを記述するとこのようになります。

コンストラクタとshowメソッドはこのように使えます。


代入

同じ型の変数にそのクラスのインスタンスを代入することができました。

このとき変数の値は、インスタンスのアドレス(参照)になります。

どんなインスタンスでも代入されるときはアドレスだとすると、 型の異なる変数への代入は可能でしょうか?

1番目はエラー、2番目は可能です。

親クラスの型をもつ変数へ、サブクラスのインスタンスを代入することはできます。

次の2行をmainメソッドに記述して実行してみると

このようになります。

変数はChain型ですが、代入されているインスタンスはCard型です。


オブジェクトをつなぐ

CardクラスはChainクラスを継承して作成したので、 Chainクラスのときと同様につなぐことができます。

変数nextへの代入によってつなぐことも可能ですが、 以下ではメソッドを使って操作することにします。

Chainクラスで作成したaddとdelの2つのメソッドは 図の青で囲んだ部分に対して、追加や削除を行うものでした。

親クラスで定義されているメソッドはサブクラスでも利用できます。

ここでもChain型の変数nextにサブクラスCardのインスタンスが代入されます。

このmainメソッドを実行するとこのようになります。