クラスとは?
Javaでプログラムを作成する上で、クラスは設計図のような役割を果たします。オブジェクトと呼ばれる具体的なものを生成するためのテンプレートであり、そのオブジェクトが持つ属性(変数)と動作(メソッド)を定義します。
public class MyClass {
// 属性(フィールド)
private int age;
private String name;
// コンストラクタ
public MyClass(int age, String name) {
this.age = age;
this.name = name;
}
// メソッド
public void sayHello() {
System.out.println("こんにちは、私の名前は" + name + "です。年齢は" + age + "歳です。");
}
}
public class MyClass: クラスの宣言。publicはアクセス修飾子で、どこからでもアクセス可能という意味です。
属性: ageとnameは、このクラスのオブジェクトが持つ属性(変数)です。privateは、このクラスの外から直接アクセスできないことを意味します。
コンストラクタ: MyClass(int age, String name)は、このクラスのオブジェクトを生成する際に呼び出される特別なメソッドです。属性に初期値を設定します。
メソッド: sayHello()は、このクラスのオブジェクトが実行できる動作(関数)です。System.out.println()は、コンソールに文字列を出力するメソッドです。
クラスの利用(インスタンス化)
public class Main {
public static void main(String[] args) {
MyClass person = new MyClass(25, "太郎");
person.sayHello();
}
}
new MyClass(25, “太郎”): MyClassのコンストラクタを呼び出し、新しいオブジェクト(インスタンス)を作成します。
person: 作成されたオブジェクトへの参照をpersonという変数に格納します。
person.sayHello(): personオブジェクトのsayHello()メソッドを呼び出します。
クラスのセッターとゲッターについて
クラスの属性(フィールド)に、外部から安全にアクセスするための仕組みがセッターとゲッターです。
- セッター: 属性の値を設定するメソッドです。
- ゲッター: 属性の値を取得するメソッドです。
なぜセッターとゲッターを使うのか?
- カプセル化: クラスの内部状態を外部から直接変更されることを防ぎ、データの整合性を保ちます。
- データの検証: 属性に設定される値を検証し、不正な値が設定されるのを防ぎます。
- 遅延評価: 必要な時に初めて値を計算するなど、柔軟な処理を実現できます。
public class Person {
private String name;
private int age;
// ゲッター
public String getName() {
return name;
}
public int getAge() {
return age;
}
// セッター
public void setName(String name) {
this.name = name;
}
public void setAge(int age) {
if (age >= 0) {
this.age = age;
} else {
System.out.println("年齢は0以上でなければなりません。");
}
}
}
コードの説明
- 属性:
name
とage
は、このクラスの属性(フィールド)です。private
なので、外部から直接アクセスできません。 - ゲッター:
getName()
とgetAge()
は、それぞれname
とage
の値を返すメソッドです。 - セッター:
setName()
とsetAge()
は、それぞれname
とage
の値を設定するメソッドです。setAge()
では、年齢が0以上の値しか設定できないように検証しています。
メインメソッド
public class Main {
public static void main(String[] args) {
// Personオブジェクトの生成
Person person = new Person();
// 属性への値の設定(セッターの利用)
person.setName("太郎");
person.setAge(25);
// 属性の値の取得(ゲッターの利用)
System.out.println("名前は" + person.getName() + "です。");
System.out.println("年齢は" + person.getAge() + "歳です。");
}
}
コードの説明
- Personオブジェクトの生成:
new Person()
によって、Personクラスのインスタンス(オブジェクト)を作成し、person
変数に代入します。 - 属性への値の設定:
person.setName("太郎")
のように、セッターメソッドを使って、オブジェクトの属性に値を設定します。 - 属性の値の取得:
person.getName()
のように、ゲッターメソッドを使って、オブジェクトの属性の値を取得します。