기본 생성자
아래의 코드를 봐봅시다.
생각해보면 아래의 코드는 생성자를 만들지 않았는데, 생성자를 호출한 적이 있습니다.
확인해 봅시다.
public class MemberInit {
String name;
int age;
int grade;
}
public class MethodInitMain1 {
public static void main(String[] args) {
MemberInit member1 = new MemberInit();
...
}
}
여기서 new MemberInit()
이 부분은 분명히 매개변수가 없는 다음과 같은 생성자가 필요할 것입니다.
public class MemberInit {
String name;
int age;
int grade;
MemberInit() { // 생성자 필요
}
}
기본 생성자
- 매개변수가 없는 생성자를 기본 생성자라 합니다.
- 클래스에 생성자가 하나도 없으면 자바 컴파일러는 매개변수가 없고, 작동하는 코드가 없는 기본 생성자를 자동으로 만들어줍니다.
- 생성자가 하나라도 있으면 자바는 기본 생성자를 만들지 않습니다.
MemberInt
클래스의 경우 생성자를 만들지 않았으므로 자바가 자동으로 기본 생성자를 만들어준 것입니다.
예제를 통해 기본 생성자를 확인해봅시다.
MemberDefault
package construct;
public class MemberDefault {
String name;
public MemberDefault() {
System.out.println("생성자 호출");
}
}
참고: 자바가 자동으로 생성해주는 기본 생성자는 클래스와 같은 접근 제어자를 같습니다.
물론 다음과 같이 기본 생성자를 직접 정의해도 됩니다.
package construct;
public class MemberDefault {
String name;
MemberDefault() {
System.out.println("생성자 호출");
}
}
실행 경과
생성자 호출
기본 생성자를 왜 자동으로 만들어줄까?
- 만약 가바에서 기본 생성자를 만들어주지 않는다면 생성자 기능이 필요하지 않은 경우에도 모든 클래스에 개발자가 직접 기본 생성자를 정의해야 합니다.
- 생성자 기능을 사용하지 않는 경우도 많기 때문에 이런 편의 기능을 제공합니다.
정리
- 생성자는 반드시 호출되어야 합니다.
- 생성자가 없으면 기본 생성자가 제공됩니다.
- 생성자가 하나라도 있으면 기본 생성자가 제공되지 않습니다. 이 경우 개발자가 정의한 생성자를 직접 호출해야합니다.