Java クラスの仕組みと使い方のサンプル

Java クラスの仕組みと使い方のサンプルです。

目次

クラスとは

[修飾子] class クラス名 {
    フィールド
    メソッド
}
  • クラスは、フィールド(データ)とメソッド(処理)を定義できます。
  • クラスからオブジェクト(インスタンス)を任意の数分、生成できます。
    その場合、オブジェクトごとにデータを保持できます。
    クラスは定義、設計図、型枠のイメージで、オブジェクトは実体です。
  • クラスのフィールドまたはメソッドにstaticを付けると、オブジェクトを生成しないでそのフィールドまたはメソッドを使用できます。
  • クラス名は最初の文字を大文字にします。Pascal記法といいます。
  • 修飾子はpublicやabstractなどがあります。
    publicはアクセス修飾子と呼ばれます。アクセス修飾子については以下を参照願います。
    Java アクセス修飾子のサンプル(public/protected/なし/private)

クラスのサンプル

3~13行目までがColorというクラスです。

package test1;

class Color {
    private String moji = "色は"; //変数
    private String name; //変数

    public String getName() { //メソッド
        return moji + name;
    }
    public void setName(String name) { //メソッド
        this.name = name;
    }
}

1行目のpackage test1は、test1というパッケージで名前空間を表します。
使い方はtest1パッケージのColorクラスと、test2パッケージのColorクラスは別のものとして区別されます。

4,5行目は、クラスの変数です。フィールドとも呼びます。
4行目は初期値を設定しています。
5行目は初期値を設定していません。このフィールド変数では、String型はnullになります。数値型の場合は0、真偽値型の場合はfalseです。(※ローカル変数では初期値をセットしないで使用するとコンパイルエラーになります)
privateは、クラスの外部からアクセスできません。この有効範囲のことをスコープと呼びます。

7,10行目は、クラスのメソッドです。
8行目のreturnは、メソッドの値(moji + name)を返します。返される値を返り値または戻り値と呼びます。
7行目のpublicは、クラスの外部からアクセスできることを意味します。その後のStringは戻り値がStringであることを意味します。
10行目のString nameは、引数です。メソッドに値を渡します。その前にあるvoidは戻り値はなしという意味です。

11行目のthis.nameのthisは、インスタンスの変数を指します。
Java クラスのthisのサンプル

クラスからオブジェクト(インスタンス)を生成する

class クラス名{   //クラスを定義
}
データ型 変数 = new クラス名();    //クラスからインスタンスを生成

クラスからオブジェクト(インスタンス)を生成できます。
オブジェクトごとにデータを管理できます。
例えると、クラスは定義、設計図、型枠でインスタンスは実体です。
new演算子を使用してインスタンスを生成します。インスタンス化といいます。

クラスからオブジェクト(インスタンス)を生成するサンプル

上記「クラスのサンプル」のColorクラスからオブジェクトを生成します。

package test1;

public class Test1 {
    public static void main(String[] args) {
        
        //インスタンスを作成
        Color c1 = new Color();
        Color c2 = new Color();
        Color c3 = new Color();
        
        //インスタンスのメソッドを使用
        c1.setName("赤");
        c2.setName("黄");
        c3.setName("青");
        
        System.out.println(c1.getName()); //色は赤
        System.out.println(c2.getName()); //色は黄
        System.out.println(c3.getName()); //色は青
    }
}

7~9行目は、上記のColorクラスのインスタンスを3つ生成しています。
Color c1のColorは、変数の型で、c1は変数です。
この変数には、インスタンスの配置場所(メモリ上のアドレス)が入ります。

12~14行目は、メソッドを使用してインスタンスに値をセットしています。
ポイントは、インスタンスごとに保持するデータが異なる点です。
16~18行目は、メソッドを使用してインスタンスの値を表示しています。
構文は、変数.メソッド名です。

クラスからオブジェクト(インスタンス)を生成しないサンプル

クラスからオブジェクトを生成しないサンプルです。staticを追加します。

package test1;

class Sample {
	static int cnt1 = 100;
	static void runSample(){
		System.out.println("テスト1");
	}
}
public class Test1 {
	public static void main(String[] args) {		
		System.out.println(Sample.cnt1); //100
		Sample.runSample(); // テスト1
 	}
}

3~8行目は、Sampleというクラスです。
4行目は、変数の前にstaticがついています。
static変数クラスフィールド静的フィールドとも呼ばれます。
5行目は、メソッドの前にstaticがついています。
staticメソッドクラスメソッド静的メソッドとも呼ばれます。
11行目は、newでオブジェクトを生成していませんがSampleクラスの変数を参照できます。
構文はクラス名.変数名です。
12行目もnewでオブジェクトを生成していませんがSampleクラスのメソッドを実行できます。
構文はクラス名.メソッド名です。
11,12行目とも参照先にstaticが付いていない場合は、コンパイルエラーになります。

staticメソッドの実際の使用例

public static double floor(double a)

staticメソッドの実際の使用例です。
Mathクラスのfloorメソッドは、staticメソッドなのでインスタンス化せずに使用できます。

package test1;

public class Test1 {
	public static void main(String[] args) {		

		double a = 2.26;
		System.out.println(Math.floor(a)); //2.0
 	}
}

7行目は、Mathクラスのfloorメソッドです。newでインスタンス化していません。
小数点第一位で切り捨てを行っています。

関連の記事

クラスはクラスを継承して使用できます。
Java クラスの継承の仕組みとサンプル
Java クラスの変数の用語のサンプルとまとめ(メンバー変数他)
Java コンストラクタのサンプル
Java オーバーライドのサンプル
Java オーバーロードのサンプル

△上に戻る