Java のクラス定義の基本について
Java では、クラスはオブジェクト指向プログラミングの中心的な要素です。ここでは、Java のクラス定義について基本から詳しく説明し、例を交えて解説します。
クラスとは何か
クラスは、オブジェクトを作成するための設計図またはテンプレートです。クラスを使用してオブジェクトを生成し、そのオブジェクトには状態(データ)と振る舞い(メソッド)が含まれます。
例えば、人を表すクラスを作成する場合、そのクラスには名前や年齢(状態)と、話すや歩くといった動作(振る舞い)を定義できます。
クラスの定義
クラスは class
キーワードを使用して定義します。基本的な構文は次の通りです:
class クラス名 {
// フィールド(データや属性)
// メソッド(動作や機能)
}
例:
class Person {
String name; // 名前(フィールド)
int age; // 年齢(フィールド)
void sayHello() { // 挨拶をする(メソッド)
System.out.println("こんにちは、私は " + name + " です。");
}
}
フィールドとメソッド
フィールドはクラスのデータや属性を表し、メソッドはそのクラスの動作や機能を定義します。
例:
class Car {
// フィールド
String model;
int year;
// メソッド
void startEngine() {
System.out.println(model + " のエンジンが始動しました。");
}
void stopEngine() {
System.out.println(model + " のエンジンが停止しました。");
}
}
この例では、model
と year
がフィールドであり、startEngine
と stopEngine
がメソッドです。
コンストラクタ
コンストラクタは、オブジェクトを生成するときに呼び出される特別なメソッドです。クラス名と同じ名前で定義され、戻り値を持ちません。
例:
class Animal {
String species;
// コンストラクタ
Animal(String species) {
this.species = species;
}
void makeSound() {
System.out.println(species + " が音を立てています。");
}
}
使用例:
Animal cat = new Animal("猫");
cat.makeSound(); // 出力: 猫 が音を立てています。
アクセス修飾子
アクセス修飾子を使用して、クラスやそのメンバーの可視性を制御できます。
public
: どこからでもアクセス可能。private
: 同じクラス内でのみアクセス可能。protected
: 同じパッケージ内またはサブクラスからアクセス可能。- デフォルト(修飾子なし): 同じパッケージ内でのみアクセス可能。
例:
class Example {
public int publicField; // 公開フィールド
private int privateField; // 非公開フィールド
public void setPrivateField(int value) {
privateField = value;
}
public int getPrivateField() {
return privateField;
}
}
完全なクラスの例
最後に、これまで説明した内容をすべて含む完全なクラスの例を示します:
class Book {
private String title; // タイトル
private String author; // 著者
private int pages; // ページ数
// コンストラクタ
public Book(String title, String author, int pages) {
this.title = title;
this.author = author;
this.pages = pages;
}
// メソッド
public void displayInfo() {
System.out.println("タイトル: " + title);
System.out.println("著者: " + author);
System.out.println("ページ数: " + pages);
}
// アクセサメソッド
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
}
使用例:
Book book = new Book("ハリーポッター", "J.K.ローリング", 500);
book.displayInfo();
book.setTitle("新しいタイトル");
System.out.println("更新後のタイトル: " + book.getTitle());