welcome: please sign in
location: "まとめと補足"の差分
11と12のリビジョン間の差分
2009-11-20 06:10:16時点のリビジョン11
サイズ: 4666
編集者: masahiko
コメント:
2009-11-20 06:13:42時点のリビジョン12
サイズ: 4667
編集者: masahiko
コメント:
削除された箇所はこのように表示されます。 追加された箇所はこのように表示されます。
行 25: 行 25:
 }
 }}}
----
=== static変数 ===

static変数(静的変数)はクラス内に取られる変数で、
そのクラスのインスタンスから共通のものとして扱うことができます。

'''例'''

 . Takoyakiクラスにはkosuとajiの2つの変数があります。

 {{{#!java
 public class Takoyaki
 {
  static int kosu;
  String aji;
  
  Takoyaki(String a)
  {
   aji = a;
  }
  
  public static void main(String[] args)
  {
   new Takoyaki("ソース");
   new Takoyaki("しょうゆ");
  }
 }
 }}}

ajiはインスタンスの属性であり、
インスタンス内に変数が取られます。

一方static修飾子がつけられた変数kosuはクラス内に取られます。

図で示すとこのようになります。
クラス内に点線で囲まれた変数はインスタンスの型紙として用いられるだけで、
ここに変数が取られるわけではありません。

 {{attachment:static1.png}}

この変数を使ってTakoyakiインスタンスが作られた個数を数えることができます。

 . 変数宣言のところで値を0に初期化しておきます。
 . コンストラクタが呼ばれたらkosuを1増やします。

いくつかコンストラクタを呼び出した後、変数kosuの値を出力して確かめることができます。

 {{{#!java
 public class Takoyaki
 {
  static int kosu = 0;
  String aji;
  
  Takoyaki(String a)
  {
   kosu++;
   aji = a;
  }
  
  public static void main(String[] args)
  {
   new Takoyaki("ソース");
   new Takoyaki("しょうゆ");
   System.out.println( kosu );
  }
行 105: 行 172:

== static変数 ==

static変数(静的変数)はクラス内に取られる変数で、
そのクラスのインスタンスから共通のものとして扱うことができます。

----
=== 例 ===

Takoyakiクラスにはkosuとajiの2つの変数があります。

 {{{#!java
 public class Takoyaki
 {
  static int kosu;
  String aji;
  
  Takoyaki(String a)
  {
   aji = a;
  }
  
  public static void main(String[] args)
  {
   new Takoyaki("ソース");
   new Takoyaki("しょうゆ");
  }
 }
 }}}

ajiはインスタンスの属性であり、
インスタンス内に変数が取られます。

一方static修飾子がつけられた変数kosuはクラス内に取られます。

図で示すとこのようになります。
クラス内に点線で囲まれた変数はインスタンスの型紙として用いられるだけで、
ここに変数が取られるわけではありません。

 {{attachment:static1.png}}

この変数を使ってTakoyakiインスタンスが作られた個数を数えることができます。

 . 変数宣言のところで値を0に初期化しておきます。
 . コンストラクタが呼ばれたらkosuを1増やします。

いくつかコンストラクタを呼び出した後、変数kosuの値を出力して確かめることができます。

 {{{#!java
 public class Takoyaki
 {
  static int kosu = 0;
  String aji;
  
  Takoyaki(String a)
  {
   kosu++;
   aji = a;
  }
  
  public static void main(String[] args)
  {
   new Takoyaki("ソース");
   new Takoyaki("しょうゆ");
   System.out.println( kosu );
  }
 }
 }}}

ここまでのまとめ

  • Javaプログラムはバーチャルマシン上で実行される。
  • Javaバイトコードは実行する環境が変わっても共通である。
  • Javaのプログラムはクラスの記述である。


クラス

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

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

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

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

それぞれ修飾子をつけることができる。

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


static変数

static変数(静的変数)はクラス内に取られる変数で、 そのクラスのインスタンスから共通のものとして扱うことができます。

  • Takoyakiクラスにはkosuとajiの2つの変数があります。
       1  public class Takoyaki
       2  {
       3         static int kosu;
       4         String aji;
       5         
       6         Takoyaki(String a)
       7         {
       8                 aji = a;
       9         }
      10         
      11         public static void main(String[] args)
      12         {
      13                 new Takoyaki("ソース");
      14                 new Takoyaki("しょうゆ");
      15         }
      16  }
    

ajiはインスタンスの属性であり、 インスタンス内に変数が取られます。

一方static修飾子がつけられた変数kosuはクラス内に取られます。

図で示すとこのようになります。 クラス内に点線で囲まれた変数はインスタンスの型紙として用いられるだけで、 ここに変数が取られるわけではありません。

  • static1.png

この変数を使ってTakoyakiインスタンスが作られた個数を数えることができます。

  • 変数宣言のところで値を0に初期化しておきます。
  • コンストラクタが呼ばれたらkosuを1増やします。

いくつかコンストラクタを呼び出した後、変数kosuの値を出力して確かめることができます。

  •    1  public class Takoyaki
       2  {
       3         static int kosu = 0;
       4         String aji;
       5         
       6         Takoyaki(String a)
       7         {
       8                 kosu++;
       9                 aji = a;
      10         }
      11         
      12         public static void main(String[] args)
      13         {
      14                 new Takoyaki("ソース");
      15                 new Takoyaki("しょうゆ");
      16                 System.out.println( kosu );
      17         }
      18  }
    


メソッド

メソッドを使うには

  • インスタンス.メソッド();

のように、インスタンスとメソッド名をピリオドでつなぎ後ろに括弧を書く。 引数が必要なときは括弧の中に書く。

  • インスタンスに対してメソッド()を行う

のように解釈すればよい。

メソッドが呼び出されると、このときのインスタンスの値が this に対応付けられて、 メソッド本体が実行される。


static変数

static修飾子のついた変数宣言。

static変数はクラス内に共通にとられる。


属性

static修飾子のつかない変数宣言。

この変数は個々のインスタンス内にとられる。

他から参照するには

  • インスタンス.変数名

の形式で書く。

そのクラスのメソッド内では

  • this.変数名

の形式になる。 ただし、混乱の可能性が無ければthis.は省略できる。

  •    1  public class Point
       2  {
       3         double x;
       4         double y;
       5         
       6         double kyori()
       7         {
       8                 return Math.sqrt( x*x + y*y );
       9         }
      10         
      11         public static void main(String[] args)
      12         {
      13                 Point a = new Point();
      14                 a.x = 3.0;
      15                 a.y = 4.0;
      16                 System.out.println( a.kyori() );
      17         }
      18  }
    


コンストラクタ

コンストラクタはクラス名と同じ名前で後ろに()がつく。

引数の型や個数が異なればいくつでも定義できる。


普通のメソッド

static修飾子のつかないメソッド。

メソッドの呼び出しは

  • インスタンス.メソッド(引数)

の形式で書く。 引数は無いときもあるし、複数のときもある。

メソッド内では、呼び出しもとのインスタンスはthisで参照できる。


staticメソッド

static修飾子のついたメソッド。

他のクラスから呼び出すときは

  • クラス名.メソッド(引数)

の形式で書く。

まとめと補足 (最終更新日時 2010-12-06 01:04:53 更新者 masahiko)