
【6日でできるJava入門】クラスのフィールド
Javaにおける「クラスのフィールド」は、クラスが持つ“データ”を表す変数です。クラスはフィールド(変数)、コンストラクタ(初期化処理)、メソッド(処理の手順)の3つで構成されています。
フィールドは、そのクラスのインスタンスごとに個別に値を持つことができる「インスタンスフィールド」と、全インスタンスで共有される「クラスフィールド(staticフィールド)」があります。
また、値が変わらない「定数フィールド」も存在します。

1.クラスの構造とフィールドの種類
1.1. クラスの構造
クラスは次のような構造を持っています。
要素 | 内容 | 例 |
---|---|---|
フィールド | クラスが管理するデータ。変数や定数 | int value; static int COUNT; |
コンストラクタ | インスタンス生成時に呼ばれる初期化メソッド | Sample(int v) { ... } |
メソッド | クラスの操作手段。処理や動作を定義する関数 | int getValue() { ... } |
1.2. フィールドの種類と特徴
フィールドの種類 | 説明 | 宣言例 | 備考 |
---|---|---|---|
インスタンスフィールド | インスタンスごとに独立した値を持つ | private int number; | オブジェクトごとに値が異なる。 |
クラスフィールド(static) | クラス全体で共通の値を持つ | public static int count = 0; | 全インスタンスで共通 |
定数フィールド(final) | 変更不可の定数値 | public static final int SIZE = 10; | 値の書き換え不可(変更不可) |
2.サンプルプログラムと解説
2.1. フィールドの使い方
次の例では、Sample
クラスにインスタンスフィールド、クラスフィールド、定数フィールドを定義しています。
ファイル名: lesson17_1.java
public class Sample {
// インスタンスフィールド
private int number;
// クラスフィールド(全インスタンス共通)
public static int count = 0;
// 定数フィールド
public static final int SIZE = 100;
// コンストラクタ
public Sample(int n) {
this.number = n;
count++; // インスタンスが生成されるたびにカウントアップ
}
// インスタンスメソッド
public int getNumber() {
return number;
}
// クラスメソッド(staticメソッド)
public static int getCount() {
return count;
}
public static void main(String[] args) {
Sample s1 = new Sample(10);
Sample s2 = new Sample(20);
System.out.println("s1のnumber: " + s1.getNumber()); // 10
System.out.println("s2のnumber: " + s2.getNumber()); // 20
System.out.println("インスタンスの総数: " + Sample.getCount()); // 2
System.out.println("定数SIZE: " + Sample.SIZE); // 100
}
}
実行結果
s1のnumber: 10
s2のnumber: 20
インスタンスの総数: 2
定数SIZE: 100
2.2. Java標準クラスの定数フィールド利用例
例えば、Integer
クラスには最大値・最小値などの定数フィールドが用意されています。
ファイル名: lesson17_1.java
public class lesson17_1 {
public static void main(String[] args) {
System.out.println("intの最大値: " + Integer.MAX_VALUE);
System.out.println("intの最小値: " + Integer.MIN_VALUE);
System.out.println("intのビット数: " + Integer.SIZE);
}
}
実行結果
intの最大値: 2147483647
intの最小値: -2147483648
intのビット数: 32
3.フィールドへのアクセスと可視性
3.1. アクセス修飾子の違い
修飾子 | アクセス範囲 | 説明 |
---|---|---|
public | どこからでもアクセス可 | 外部からも見える |
protected | 同じパッケージ/サブクラス内 | 継承クラスからも見える |
(なし) | 同じパッケージ内 | パッケージプライベート |
private | 同じクラス内のみ | 完全に隠蔽される |
フィールドはprivate
で宣言し、getter/setter
メソッドで操作するのが一般的です。
まとめ
- フィールドはクラスが保持するデータ(変数・定数)。
- インスタンスごと、クラス全体、定数値など目的に応じて使い分ける。
static final
で定数フィールド(値の変更不可)を表現できる。- 標準クラス(例:
Integer.MAX_VALUE
)にも多くの定数がある。