생성자 (Constructor) 란
- 생성자는 인스턴스가 생성되는 시점 (new)에 딱 한번 호출 됩니다.
객체를 초기화하고 heap 에 객체를 저장하는 메서드입니다.
생성자 (Constructor) 의 규칙
- 생성자에는 아래와 같이 두 가지의 규칙이 있습니다.
1. 생성자는 클래스 명과 동일해야 합니다.
2. 생성자는 return 값이 존재하지 않습니다. (void 나 int 와 같이 리턴 타입이 선언되어 있지도 않습니다.)
ex)
public class ClassName {
modifier ClassName () {
}
}
생성자는 중복 정의가 될 수 있습니다. (생성자 오버로드)
같은 클래스 내에서 오버로딩 된 다른 생성자 하나를 호출하는 것은 생성자 구현부 첫 번째 줄에서만 this() 를 사용하여 가능합니다.
모든 객체는 반드시 한 개 이상의 생성자를 갖으며,
생성자를 정의하지 않았을 경우에는 JVM (자바 가상 머신, Java Virtual Machine)이 제공하는 생성자가 호출되어 집니다.
생성자 (Constructor) 의 종류
- 생성자는 기본 생성자(Default Constructor)와 명시적 생성자 (Explicit Constructor) 두 종류가 있습니다.
기본 생성자 (Default Constructor)
- 위에서 언급 했듯이 모든 클래스에는 반드시 하나 이상의 생성자가 정의 되어 있어야 하는데,
지금까지 클래스에 생성자를 정의하지 않고도 인스턴스를 생성할 수 있었던 이유는 JVM 에서 자동으로 생성해주었기 때문입니다.
단, 생성자를 명시적으로 정의하면 기본 생성자는 자동으로 생성되지 않습니다.
명시적 생성자 (Explicit Constructor)
- 기본 생성자 외에 프로그래머가 명시적으로 선언하는 생성자로 이 경우에는 기본 생성자가 자동으로 생성되지 않습니다.
public class Test {
public Test(int a, int b) {
}
}
위와 같이 명시적으로 생성자를 선언하게 되면, 기본 생성자가 자동으로 생성되지 않으므로,
Test t = new Test(); 를 하면 오류가 발생하기 때문에
Test t = new Test(10, 20); 이런 식으로 호출해야 합니다.
명시적 생성자를 선언한 경우 기본 생성자를 사용하기 위해서는 프로그래머가 기본 생성자를 아래와 같이 선언해주어야 합니다.
public class Test {
public Test() {
}
public Test(int a, int b) {
}
}
그렇게 되면
Test t = new Test();
Test t = new Test(10, 20);
모두 사용할 수 있게 됩니다.
'IT > JAVA' 카테고리의 다른 글
자바 제어문 (Control Flow Statement) 조건문 if문, switch문 (0) | 2018.01.04 |
---|---|
자바 제어문 (Control Flow Statement) 분기문 break문, continue문 (0) | 2018.01.04 |
자바 this, this(), super, super() (0) | 2018.01.02 |
인터페이스(Interface) 정의 및 사용 이유 (장점) (0) | 2017.12.29 |
자바 접근제어자 (Access Modifier) (0) | 2017.12.29 |