public class Person {
// フィールド: 名前と年齢
private String name;
private int age;
// デフォルトコンストラクタ
public Person() {
// デフォルトの初期値を設定
this.name = "未設定";
this.age = 0;
}
// 引数を受け取るコンストラクタ
public Person(String name, int age) {
// 引数で渡された値でフィールドを初期化
this.name = name;
this.age = age;
}
// 他のメソッドやコードは省略
}
この解答例では、デフォルトコンストラクタと引数を受け取るコンストラクタの両方が定義されています。デフォルトコンストラクタでは、名前を “未設定”、年齢を 0 で初期化し、引数を受け取るコンストラクタでは引数で渡された値で初期化しています。これにより、Person
オブジェクトを様々な方法で初期化できるようになります。
引数を持つコンストラクタ
「引数を持つコンストラクタ」は、クラスのインスタンスを生成する際に、外部から渡された引数を使用してオブジェクトの初期化を行う特殊なメソッドです。引数を持つコンストラクタを定義することにより、オブジェクトを生成する際に必要な情報を提供できます。
以下に、引数を持つコンストラクタに関する要点を解説します。
1.構文:
引数を持つコンストラクタは、メソッドのように定義されますが、戻り値の型はありません。コンストラクタ名はクラス名と同じにします。引数はカンマで区切って指定します。
public class MyClass {
// 引数を持つコンストラクタ
public MyClass(Type1 arg1, Type2 arg2, ...) {
// 初期化処理
}
}
2.初期化処理:
引数を持つコンストラクタ内で、引数で受け取った値を使用してオブジェクトのフィールドや状態を初期化します。この初期化処理により、オブジェクトが生成されるときに必要な情報を持った状態になります。
public class Person {
// フィールド: 名前と年齢
private String name;
private int age;
// 引数を受け取るコンストラクタ
public Person(String name, int age) {
// 引数で渡された値でフィールドを初期化
this.name = name;
this.age = age;
}
}
3.オーバーロード:
クラスには複数のコンストラクタを定義できます。この複数のコンストラクタのうち、引数の型や数が異なるものを定義することをコンストラクタのオーバーロードと呼びます。これにより、異なる方法でオブジェクトを初期化できます。
public class Person {
// フィールド: 名前と年齢
private String name;
private int age;
// 引数を受け取るコンストラクタ
public Person(String name, int age) {
this.name = name;
this.age = age;
}
// 別の引数を受け取るコンストラクタ (オーバーロード)
public Person(String name) {
this.name = name;
this.age = 0; // 年齢はデフォルトで0に設定
}
}
引数を持つコンストラクタは、クラスの柔軟性を高め、異なる初期化の要件に対応できるようにします。これにより、同じクラスを様々な状態で利用することができます。