그런데 Car 객체에 생성자가 하나도 없을 때는 기본 생성자가 자동으로 만들어지지만, 생성자를 하나라도 정의하면 기본 생성자가 자동으로 만들어지지 않습니다. 이 코드에서는 정의한 생성자가 하나 있고, 따라서 기본 생성자가 만들어지지 않았기 때문에 방금 작성한 코드에서 컴파일 오류가 발생합니다.
The constructor Car() is undefined
그렇다면 기본 생성자를 아예 사용할 수 없을까요? 그건 아닙니다. 생성자도 여러 개 정의할 수 있습니다. 이렇게 기본 생성자로도 Car 객체를 만들고 싶다면 기본 생성자를 직접 정의해두면 됩니다.
작성한 코드처럼 디폴트로 아무 값도 받지 않는 생성자를 기본 생성자라고 합니다. 기본 생성자를 하나 만들어보겠습니다.
package javaStudy;
public class Car{
// 형 + 필드명
String name;
int number;
public Car(String name) {
this.name = name;
}
public Car() {
}
}
기본 생성자를 정의하면 CarExam3.java 파일에 있던 에러가 사라집니다. 생성자도 이렇게 오버로딩이 가능합니다.