サイズ: 2679
コメント:
|
サイズ: 2861
コメント:
|
削除された箇所はこのように表示されます。 | 追加された箇所はこのように表示されます。 |
行 96: | 行 96: |
ここでもChain型の変数nextにサブクラスCardのインスタンスが代入されます。 このmainメソッドを実行するとこのようになります。 |
|
行 97: | 行 100: |
---- |
継承の例
前回までに作成した Chainクラス を継承して Cardクラス を作ります。
Cardクラスのインスタンスは3つの変数(属性)を持ちます。
コンストラクタとshowメソッドを記述するとこのようになります。
- 1行目にextends...があることに注意
コンストラクタとshowメソッドはこのように使えます。
代入
同じ型の変数にそのクラスのインスタンスを代入することができました。
このとき変数の値は、インスタンスのアドレス(参照)になります。
Card a = new Card(); Chain c = new Chain();
どんなインスタンスでも代入されるときはアドレスだとすると、 型の異なる変数への代入は可能でしょうか?
Card a = new Chain(); Chain c = new Card();
1番目はエラー、2番目は可能です。
親クラスの型をもつ変数へ、サブクラスのインスタンスを代入することはできます。
次の2行をmainメソッドに記述して実行してみると
Chain c = new Card(); System.out.println(c);
このようになります。
変数はChain型ですが、代入されているインスタンスはCard型です。
オブジェクトをつなぐ
CardクラスはChainクラスを継承して作成したので、 Chainクラスのときと同様につなぐことができます。
変数nextへの代入によってつなぐことも可能ですが、 以下ではメソッドを使って操作することにします。
Chainクラスで作成したaddとdelの2つのメソッドは 図の青で囲んだ部分に対して、追加や削除を行うものでした。
親クラスで定義されているメソッドはサブクラスでも利用できます。
ここでもChain型の変数nextにサブクラスCardのインスタンスが代入されます。
このmainメソッドを実行するとこのようになります。