Javaクラスとオブジェクト:実践ガイド
Javaクラスとオブジェクト
Javaのクラスとオブジェクトモデルが、実世界の概念を再利用可能なコードに変える仕組みを発見しましょう。
Javaは根本的にオブジェクト指向です。複雑な問題を、状態と振る舞いを持つ管理しやすい自己完結型のエンティティ(オブジェクト)に分割します。
オブジェクトは、データ(状態)を保持し、アクション(振る舞い)を提供するあらゆるものになり得ます。例えば、自転車には:
- 状態: アイドル、1速ギアなど
- 振る舞い: ブレーキ、加速など
オブジェクトに入る前に、それらを定義する設計図であるクラスを探求しましょう。
Javaクラス
クラスはオブジェクトがインスタンス化されるテンプレートです。階数、ドア、窓を指定する家の設計図のようなものです。同じ設計図から複数の家を建てられるように、1つのクラスから複数のオブジェクトを作成できます。
Javaでのクラス作成
classキーワードでクラスを定義します:
class ClassName {
// フィールド
// メソッド
}
フィールド(変数)がオブジェクトの状態を保持し、メソッドが振る舞いをカプセル化します。
- フィールドはデータを格納
- メソッドは操作を実行
例:Bicycleクラス。
class Bicycle {
// 状態
private int gear = 5;
// 振る舞い
public void braking() {
System.out.println("ブレーキの動作");
}
}
ここでは、Bicycleはプロトタイプです。同じ構造を共有しながら独立したデータを保持する複数の自転車インスタンスを作成できます。
注意: privateとpublicは可視性を制御するアクセス修飾子です。詳細についてはJavaアクセス修飾子を参照してください。
Javaオブジェクト
オブジェクトはクラスのインスタンスです。例えば、Bicycleがクラスで、MountainBicycle、SportsBicycle、TouringBicycleなどがそのクラスから派生した個別のオブジェクトです。
Javaでのオブジェクト作成
newキーワードとクラスのコンストラクタでオブジェクトをインスタンス化します:
className object = new className(); // Bicycleの場合
Bicycle sportsBicycle = new Bicycle();
Bicycle touringBicycle = new Bicycle();
コンストラクタはクラス名と同じ特別なメソッドです。詳細についてはJavaコンストラクタを参照してください。
sportsBicycleやtouringBicycleのような名前は、それぞれのインスタンスへの参照として機能します。
同じクラスの複数インスタンスは互いに干渉せず共存できます。
注意: クラスのフィールドとメソッドは総称してメンバーと呼ばれます。
クラスメンバーへのアクセス
ドット演算子とオブジェクト参照を使用してメンバーにアクセスします:
class Bicycle {
int gear = 5;
void braking() {
// ...
}
}
Bicycle sportsBicycle = new Bicycle();
sportsBicycle.gear;
sportsBicycle.braking();
ここでは、sportsBicycleがgearフィールドにアクセスし、braking()メソッドを呼び出します。
- sportsBicycle.gear – gear値を読み取り
- sportsBicycle.braking() – ブレーキルーチンを呼び出し
次の章ではJavaメソッドを深く探求します。
以下はこれらの概念を結びつける完全な例です。
例: Javaクラスとオブジェクト
class Lamp {
// ランプが点灯しているか追跡
boolean isOn;
void turnOn() {
isOn = true;
System.out.println("点灯中? " + isOn);
}
void turnOff() {
isOn = false;
System.out.println("点灯中? " + isOn);
}
}
class Main {
public static void main(String[] args) {
Lamp led = new Lamp();
Lamp halogen = new Lamp();
led.turnOn();
halogen.turnOff();
}
}
出力:
点灯中? true 点灯中? false
このプログラムでは、Lampがインスタンス変数isOnとそれを操作する2つのメソッドを定義します。Mainクラスは2つのランプオブジェクト(ledとhalogen)を作成し、それらのメソッドを独立して呼び出します。
各オブジェクトは独自のisOnコピーを保持するため、一方のランプ操作が他方に影響しません。
例: 同じクラス内でオブジェクトを作成
オブジェクトはそれらを定義する同じクラス内でもインスタンス化できます。方法は以下の通り:
class Lamp {
boolean isOn;
void turnOn() {
isOn = true;
System.out.println("点灯中? " + isOn);
}
public static void main(String[] args) {
Lamp led = new Lamp();
led.turnOn();
}
}
出力
点灯中? true
このパターンは、メインロジックが同じクラス内にある小さなデモやユーティリティクラスで有用です。
Java
- C++クラスとオブジェクト完全ガイド:オブジェクト指向プログラミングの実践
- Java変数とリテラル:包括的ガイド
- Javaのfinalキーワード完全解説:変数、メソッド、クラスでの活用法
- Java instanceof演算子完全ガイド:基本から継承・インターフェースまで
- Java抽象クラスとメソッド:包括的ガイド
- Javaネストクラスとインナークラス完全ガイド:種類、例、ベストプラクティス
- Java Staticネストクラスの理解:用法、違い、実例
- Java無名インナークラス完全ガイド:定義、構文、実践例
- Javaシングルトンパターン完全解説:安全な実装と活用法
- Javaリフレクション完全ガイド:実行時のクラス・メソッド・フィールド検査
- Java ObjectOutputStream完全ガイド:シリアル化、メソッド、実践例