welcome: please sign in
location: "継承の例"の差分
1と7のリビジョン間の差分 (その間の編集: 6回)
2010-11-30 01:12:58時点のリビジョン1
サイズ: 401
編集者: masahiko
コメント:
2010-11-30 13:24:38時点のリビジョン7
サイズ: 2040
編集者: masahiko
コメント:
削除された箇所はこのように表示されます。 追加された箇所はこのように表示されます。
行 4: 行 4:
前回までに作成した Chainクラス を継承して Cardクラス を作ります。
 . {{attachment:card1.png}}
Cardクラスのインスタンスは3つの変数(属性)を持ちます。
 . {{attachment:card2.png}}

コンストラクタとshowメソッドを記述するとこのようになります。
 * 1行目にextends...があることに注意
行 24: 行 31:
}
 }}}
コンストラクタとshowメソッドはこのように使えます。
行 25: 行 35:
 {{{#!java
行 32: 行 43:
}  }}}
----
=== 代入 ===
同じ型の変数にそのクラスのインスタンスを代入することができました。
行 34: 行 48:
このとき変数の値は、インスタンスのアドレス(参照)になります。
 {{{
 Card a = new Card();
 Chain c = new Chain();
行 35: 行 53:

どんなインスタンスでも代入されるときはアドレスだとすると、
型の異なる変数への代入は可能でしょうか?
 {{{
 Card a = new Chain();
 Chain c = new Card();
 }}}
1番目はエラー、2番目は可能です。

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

この2行をmainメソッドに記述して実行してみると
 {{{
 Chain c = new Card();
 System.out.println(c);
 }}}
このようになります。
 . {{attachment:card4.png}}
変数はChain型ですが、代入されているインスタンスはCard型です。
----
 {{{#!java
 public static void main(String[] args)
 {
  Card a;
  a = new Card();
  
  a.add(new Card("ハート", 13));
  a.add(new Card("ハート", 12));
  a.showContent();
 }
 }}}
 . {{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型です。


  •    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         }
    
  • card3.png

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