welcome: please sign in
location: "継承の例"の差分
7と8のリビジョン間の差分
2010-11-30 13:24:38時点のリビジョン7
サイズ: 2040
編集者: masahiko
コメント:
2010-11-30 13:27:35時点のリビジョン8
サイズ: 2226
編集者: masahiko
コメント:
削除された箇所はこのように表示されます。 追加された箇所はこのように表示されます。
行 62: 行 62:
親クラスの型をもつ変数へ、サブクラスのインスタンスを代入することはできます。 '''親クラスの型をもつ変数へ、サブクラスのインスタンスを代入することはできます。'''
行 64: 行 64:
の2行をmainメソッドに記述して実行してみると の2行をmainメソッドに記述して実行してみると
行 73: 行 73:
=== オブジェクトをつなぐ ===
CardクラスはChainクラスを継承して作成したので、
Chainクラスのときと同様につなぐことができます。
 . {{attachment:card3.png}}
行 84: 行 89:
 . {{attachment:card3.png}}

継承の例

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

  • card1.png

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

  • card2.png

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

  • 1行目にextends...があることに注意
       1 public class Card extends Chain
       2 {
       3         String suit;
       4         int rank;
       5 
       6         Card()
       7         {
       8         }
       9 
      10         Card(String suit, int rank)
      11         {
      12                 this.suit = suit;
      13                 this.rank = rank;
      14         }
      15 
      16         void show()
      17         {
      18                 System.out.printf("%s %d\n", suit, rank);
      19         }
      20 }
    

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

  •    1         public static void main(String[] args)
       2         {
       3                 Card a;
       4                 
       5                 a = new Card("ハート", 1);
       6                 a.show();
       7         }
    


代入

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

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

  •         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);

このようになります。

  • card4.png

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


オブジェクトをつなぐ

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

  • card3.png

       1         public static void main(String[] args)
       2         {
       3                 Card a;
       4                 a = new Card();
       5                 
       6                 a.add(new  Card("ハート", 13));
       7                 a.add(new  Card("ハート", 12));
       8                 a.showContent();
       9         }
    

継承の例 (最終更新日時 2010-12-01 00:36:10 更新者 masahiko)