welcome: please sign in
location: "コンストラクタ"の差分
8と9のリビジョン間の差分
2008-11-10 05:22:06時点のリビジョン8
サイズ: 1875
編集者: masahiko
コメント:
2008-11-10 05:38:49時点のリビジョン9
サイズ: 3485
編集者: masahiko
コメント:
削除された箇所はこのように表示されます。 追加された箇所はこのように表示されます。
行 53: 行 53:
 . コンストラクタはクラスと同じ名前です。  * コンストラクタはクラスと同じ名前です。
 * コンストラクタを呼び出すときは前に new をつけます。
 * コンストラクタが呼び出されるとインスタンスが作成されます。
行 55: 行 57:
 . コンストラクタを呼び出すときは前に new をつけます。 === コンストラクタの定義 ===
行 57: 行 59:
 . コンストラクタが呼び出されるとインスタンスが作成されます。 コンストラクタは定義しなくてもかまいません。

インスタンス作成時になんらかの処理をしたいときには、
コンストラクタを定義して記述します。

 * コンストラクタには戻り値を指定できません。

 {{{#!java
 public class Card
 {
  String suit;
  int rank;
  
  Card()
  {
   System.out.println("Cardインスタンスを作成しました");
  }
 
  public static void main(String[] args)
  {
   Card a;
   a = new Card();
   a.suit = "ハート";
   a.rank = 12;
  }
 }
 }}}

この例では new Card() が呼び出されるとインスタンスが作成され、
「Cardインスタンスを作成しました」と表示されます。

=== オーバーロード ===

引数をとるコンストラクタを定義することもできます。

引数の型や引数の個数が異なればいくつコンストラクタを定義してもよい。

 {{{#!java
 public class Card
 {
  String suit;
  int rank;
  
  Card(String s, int r)
  {
   suit = s;
   rank = r;
  }
 
  public static void main(String[] args)
  {
   Card a;
   a = new Card("ハート", 12);
  }
 }
 }}}

インスタンスを作成すると同時に、インスタンス変数に値を代入するコンストラクタの例です。

値はコンストラクタの引数として与えています。

コンストラクタ内で使われている suit, rank の2つの名前は、
今作成したインスタンスの中の変数のことです。

クラス

  • クラスはオブジェクトの状態動作をサポートする。

  • オブジェクトの状態は属性の集まりとして表される。

  • オブジェクトの動作はメソッドで記述される。

クラスの記述(プログラム)は次のような形式になる。 5つの項目があるが、必要なものだけ記述すればよい。

  •  修飾子 class クラス名
     {
         static変数の宣言
         属性の宣言
         コンストラクタの定義
         普通のメソッドの定義
         staticメソッドの定義
     }

コンストラクタ、普通のメソッド、staticメソッドをあわせてメソッドと言います。

static変数、staticメソッドについては後日解説します。


コンストラクタ

属性(の集まり)がインスタンスの型紙として使われました。

属性の宣言は変数の宣言と同じ書き方をしますが、ここに変数が取られるわけではありません。

  •    1  public class Card
       2  {
       3         String suit;
       4         int rank;
       5         
       6         public static void main(String[] args)
       7         {
       8                 Card a;                 
       9                 a = new Card();
      10                 a.suit = "ハート";
      11                 a.rank = 12;
      12         }
      13  }
    

この例では new Crad() が行われるとインスタンス(そのクラスのオブジェクト)が作られ、 a.suit、a.rankによって、そのインスタンスの属性にアクセスすることができました。

インスタンスを生成するときに使われる Card() のことをコンストラクタと言います。

  • コンストラクタはクラスと同じ名前です。
  • コンストラクタを呼び出すときは前に new をつけます。
  • コンストラクタが呼び出されるとインスタンスが作成されます。

コンストラクタの定義

コンストラクタは定義しなくてもかまいません。

インスタンス作成時になんらかの処理をしたいときには、 コンストラクタを定義して記述します。

  • コンストラクタには戻り値を指定できません。
       1  public class Card
       2  {
       3         String suit;
       4         int rank;
       5         
       6         Card()
       7         {
       8                 System.out.println("Cardインスタンスを作成しました");
       9         }
      10  
      11         public static void main(String[] args)
      12         {
      13                 Card a;                 
      14                 a = new Card();
      15                 a.suit = "ハート";
      16                 a.rank = 12;
      17         }
      18  }
    

この例では new Card() が呼び出されるとインスタンスが作成され、 「Cardインスタンスを作成しました」と表示されます。

オーバーロード

引数をとるコンストラクタを定義することもできます。

引数の型や引数の個数が異なればいくつコンストラクタを定義してもよい。

  •    1  public class Card
       2  {
       3         String suit;
       4         int rank;
       5         
       6         Card(String s, int r)
       7         {
       8                 suit = s;
       9                 rank = r;
      10         }
      11  
      12         public static void main(String[] args)
      13         {
      14                 Card a;                 
      15                 a = new Card("ハート", 12);
      16         }
      17  }
    

インスタンスを作成すると同時に、インスタンス変数に値を代入するコンストラクタの例です。

値はコンストラクタの引数として与えています。

コンストラクタ内で使われている suit, rank の2つの名前は、 今作成したインスタンスの中の変数のことです。

コンストラクタ (最終更新日時 2010-11-08 01:56:04 更新者 masahiko)