JAVA/객체지향프로그래밍1

[JAVA] 기본 생성자(default constructor)

prize1209 2021. 6. 21. 17:14

기본 생성자란?

- 매개변수가 없는 생성자

 

- 클래스에 생성자가 하나도 없으면 컴파일러가 기본 생성자를 추가한다.

    (생성자가 하나라도 있으면 컴파일러는 기본 생성자를 추가하지 않는다.)

 

 

모든 클래스에는 반드시 하나 이상의 생성자가 있어야 한다.”

 

특별히 인스턴스 초기화 작업이 요구되지 않는다면, 생성자를 정의하지 않고 컴파일러가 제공하는 기본 생성자를 사용하는 것도 좋다. 

 

 

예23)

class Data1 {
	int value;
}

class Data2 {
	int value;

	Data2(int x) {
		int value;
	}

}

public class ConstructorTest {
	public static void main(String[] args) {
		Data1 d1 = new Data1();
		Data2 d2 = new Data2();
	}
}

 

컴파일 에러 발생. 

 

Data2에서 Data2( ) 라는 생성자를 찾을 수 없다는 것이다. 

Data1 은 정의되어있는 생성자가 하나도 없으므로 컴파일러가 자동적으로 기본 생성자를 추가해주었다. 

Data2에는 Data2(int x) 생성자가 정의되어있으므로, 기본 생성자가 추가되지 않았다. 

 

그러면 이미 있는 Data2(int x)를 쓰면 되지 않나?

Data2()가 Data2(int x)를 왜 쓸 수 없느냐? Data2(int x)가 매개변수가 있는 생성자라서 그렇다. 

 

Data2 d2 = new Data2();

-> Data2 d2 = new Data2(10); 으로 매개변수에 값을 줘서 Data2의 인스턴스를 생성할 때 생성자 Data2(int x)를 사용하던가 

아니면 

Data2() 생성자를 추가해주면 된다. 

 

기본 생성자가 컴파일러에 의해 추가되는 경우는 클래스에 정의된 생성자가 하나도 없을 때 뿐이다.