welcome: please sign in
location: "まとめと補足"の差分
13と14のリビジョン間の差分
2009-11-20 06:17:42時点のリビジョン13
サイズ: 4149
編集者: masahiko
コメント:
2009-11-20 06:21:00時点のリビジョン14
サイズ: 4450
編集者: masahiko
コメント:
削除された箇所はこのように表示されます。 追加された箇所はこのように表示されます。
行 159: 行 159:
----
=== 修飾子 ===

つぎの4つについて簡単に説明します。

    * static
    * final
    * public
    * private

クラス、メソッド、変数のどれに指定するかで意味が異なるものがあります。

他に abstract, protected があります。

ここまでのまとめ

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


クラス

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

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

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

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

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

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


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  }
    


属性

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修飾子のついたメソッド。

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

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

の形式で書く。

  • Math.sqrt(2.0)


修飾子

つぎの4つについて簡単に説明します。

  • static
  • final
  • public
  • private

クラス、メソッド、変数のどれに指定するかで意味が異なるものがあります。

他に abstract, protected があります。

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