auの日記

プログラミング初心者の日記。(auはハンドルネームです)

デフォルトコンストラクタについて調べてみた

auです。

デフォルトコンストラクタについて調べてみました。

デフォルトコンストラクタとは

デフォルトコンストラクタとは、コンストラクタを明示的に定義しなかった際に、エラーが出ないように自動的に作成されるコンストラクタのことです。

そもそもコンストラクタとは、インスタンスを作成した際に最初に呼び出されるメソッドのことです。

public class User {
    private String name;
    private int age;

    public User(String n, int a) {
        name = n;
        age = a;
	}
	
	public String getName() {
		return name;
	}
}

public class Company {
    public static void main(String argv[]) {
        User usr1 = new User("au", 22);
        System.out.println(usr1.getName());
    }
}

>>au

この場合、Userクラスのインスタンス作成時に「"au", 22」がコンストラクタに与えられます。
なので、名前が入っている状態でインスタンスが作成されます。

しかし、コンストラクタがなくてもインスタンスを作成することは可能です。

public class User {
    private String name;
    private int age;

    // public User(String n, int a) {
    //     name = n;
    //     age = a;
	// }

	public void registerName(String n) {
		name = n;
	}

	public String getName() {
		return name;
	}
}

public class Company {
    public static void main(String argv[]) {
        User usr1 = new User();
        usr1.registerName("au");
        System.out.println(usr1.getName());
    }
}

今回は明示的にコンストラクタは付けずにインスタンスを作成して同じようなことをしました。
コンストラクタがなくてもエラーなく実行されています。
実際には以下のような感じの処理になっているようです。

public class User {
    private String name;
    private int age;

    public User() {
   }

    public void registerName(String n) {
        name = n;
    }

    public String getName() {
        return name;
    }
}

空のコンストラクタを自動的に作成してエラーを回避しているようです。
これで何事もなくUserクラスを操作することが可能ですね。