第 7 回: メソッド (static method), クラスとインスタンス, コンストラクタとメソッド, クラスの利用

メソッド (static method)

メソッドのテンプレート:

戻り値の型 メソッド名(引数列){
  処理;
  return 文;
}

AverageM.java

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
public class AverageM{
    public static void main(String[] args){
	int yamada, ueda, oda;
	double av;

	yamada = 99;
	ueda = 77;
	oda = 64;

	av = average(yamada, ueda, oda);

	System.out.println("山田は " + yamada + " 点");
	System.out.println("上田は " + ueda + " 点");
	System.out.println("小田は " + oda + " 点");
	System.out.println("平均点は " + av + " 点");
    }

    public static double average(int a, int b, int c){
	return (a+b+c) / 3.0;
    }
}

AverageM.java の実行結果は:

[wtopia koji]$ java AverageM
山田は 99 点
上田は 77 点
小田は 64 点
平均点は 80.0 点

Graph1.java

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
public class Graph1{
    public static void main(String[] args){
	printGraph(10);
    }

    public static void printGraph(int x){
	for(int i = 0; i < x; i++){
	    System.out.print("*");
	}
	System.out.println();
	// System.out.println("");
    }
}

Graph1.java の実行結果は:

[wtopia koji]$ java Graph1
**********

Power1.java

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
public class Power1{
    public static void main(String[] args){
	System.out.println(getPower(2, 8));
    }

    /*x の n 乗の計算 */
    public static int getPower(int x, int n){
	int y = 1;
	for(int i = 0; i < n; i++){
	    y *= x;
	}
	return y;
    }
}

Power1.java の実行結果は:

[wtopia koji]$ java Power1
256

クラスとインスタンス

クラスは, 関連した情報を一つにまとめたもの.

クラスは, フィールドとメソッドを持つ:

1. フィールドは, 変数のようなもの
2. メソッドは, 関数のようなもの

クラスから作られた [具体的なもの] (具体例, 実体, 実例) をインスタンスという.

クラス宣言:

public class クラス名{
  フィールドの宣言
  メソッドの宣言
}

インスタンスの作り方:

クラス名 変数 = new クラス名();

フィールドへの代入:

インスタンス.フィールド名 = 値;

コンストラクタとメソッド

コンストラクタは, インスタンスの初期化を行うもの:

1. コンストラクタは, クラス名と名前が同じ.
2. 戻り値の型が書かれていない.

this は, 現在のインスタンスを示す.

toString メソッドは, そのクラスの標準的な文字列表現を定めている.

クラスの利用

クラスは, フィールドとメソッドを持っている:

1. フィールドには, インスタンスフィールドと, クラスフィールドの 2 種類ある.
2. メソッドには, インスタンスメソッドと, クラスメソッドの 2 種類ある.

クラス宣言の仕組み:

public class クラス名{
  型 フィールド名;
  型 フィールド名;
  型 フィールド名;

  型 メソッド名(引数列){
    型 変数名;
    ...
  }

  型 メソッド名(引数列){
    型 変数名;
    ...
  }
}