Javaのパラメータ化コンストラクタとは?使い方と具体例を解説
Javaのコンストラクタとは
コンストラクタはメソッドに似た特別な仕組みで、クラスのオブジェクトが生成されるタイミングで自動的に呼び出されます。主にクラスのインスタンス変数を初期化するために使用されます。コンストラクタにはクラス名と同じ名前を付けなければならず、戻り値の型は持ちません。
コンストラクタには大きく分けて「引数なし(デフォルト)コンストラクタ」と「パラメータ化(引数付き)コンストラクタ」の2種類があります。このうち、パラメータ化コンストラクタは1つ以上の引数を受け取ることができるのが特徴です。
パラメータ化コンストラクタの役割
コンストラクタの主な目的は、クラスのインスタンス変数を初期化することです。パラメータ化コンストラクタを使用すれば、オブジェクトをインスタンス化する時点で渡した値を使って、インスタンス変数を動的に初期化できます。これにより、同じクラスから生成した複数のオブジェクトに対して、それぞれ異なる値を持たせることが可能になります。
public class Sample {
int i;
public Sample(int i) {
this.i = i;
}
}具体例:StudentDataクラス
次の例では、Studentクラスがnameとageという2つのprivateフィールドを持っています。mainメソッド内では、Scannerを使ってユーザーから入力を受け取り、その値を引数としてパラメータ化コンストラクタに渡してインスタンスを生成しています。
import java.util.Scanner;
public class StudentData {
private String name;
private int age;
// パラメータ化コンストラクタ
public StudentData(String name, int age) {
this.name = name;
this.age = age;
}
public void display() {
System.out.println("学生の名前: " + this.name);
System.out.println("学生の年齢: " + this.age);
}
public static void main(String args[]) {
// ユーザーから値を入力
Scanner sc = new Scanner(System.in);
System.out.println("学生の名前を入力してください:");
String name = sc.nextLine();
System.out.println("学生の年齢を入力してください:");
int age = sc.nextInt();
System.out.println(" ");
// パラメータ化コンストラクタを呼び出し
new StudentData(name, age).display();
}
}
実行結果
学生の名前を入力してください:
Sundar
学生の年齢を入力してください:
20
学生の名前: Sundar
学生の年齢: 20
このように、パラメータ化コンストラクタを利用すると、オブジェクト生成時に必要なデータを柔軟に設定できます。初期化漏れや値の不整合を防ぎながら、安全で簡潔なコードを実現できるため、実務においても非常に重要なテクニックです。
-
JavaのsetBounds()メソッドとは?使い方とサンプルコードを解説
JavaのGUIプログラミングでは、レイアウトマネージャー(Layout Manager)がコンポーネントの位置やサイズを自動的に決定します。しかし、レイアウトマネージャーを使用しない場合は、コンポーネントの位置とサイズを手動で設定する必要があります。そのような場面で活躍するのがsetBounds()メソッドです。フレームのレイアウトマネージャーをnullに設定することで、コンポーネントの位置とサイズを自由に指定できるようになります。setBounds()メソッドの基本setBounds()メソッドは4つの引数を取ります。第1引数と第2引数はコンポーネントの左上隅のx座標・y座標、第3引数はコ
-
Javaのコンストラクター名がクラス名と同じでなければならない理由とは?
コンストラクター名がクラス名と同じである理由Javaでは、あらゆるクラスのオブジェクトは共通の「new」キーワードを使って生成されます。しかし、このキーワードだけでは、どのクラスのインスタンスを作成すればよいのかを判別することはできません。そのため、オブジェクトを生成すべき対象のクラスを正確に識別するための情報が必要になります。この課題を解決するために、「コンストラクター名は必ずクラス名と一致させる」というルールが設けられています。クラス名とコンストラクター名が同一であれば、newキーワードに続けて書かれた名前をもとに、どのクラスのコンストラクターを呼び出してオブジェクトを初期化すべきかを明確