생성자


생성자는 간단하게 얘기하면 인스턴스가 생성될 때 호출되는 '인스턴스 초기화 메소드'이다. 인스턴스 변수의 초기화 작업에 사용되고, 인스턴스 생성 시에 실행되어야 할 작업을 위해서 사용된다.

1. 기본 생성자


컴파일을 할 때, 소스파일의 클래스에 생성자가 하나도 정의되어있지 않으면 컴파일러가 자동으로 기본 생성자를 생성해서 컴파일해준다. (아래 예제 참고)

class Data1 {
	int value;
}

class Data2 {
	int value;

	Data2(int x) { 	// 매개변수가 있는 생성자.
		value = x;
	}
}

class ConstructorTest {
	public static void main(String[] args) {
		Data1 d1 = new Data1();
		Data2 d2 = new Data2(); //에러가 발생한다.
	}
}

위에 코드를 실행해보면 Data2 d2 = new Data2() 부분에서 에러가 발생하는데 이유는 Data2()는 기본 생성자가 아닌 매개변수가 있는 생성자이기 때문이다.

2. 매개변수가 있는 생성자


위 에러가 발생했던 Data2()처럼, 인스턴스를 생성할 때 매개변수가 있는 생성자를 사용한다면 인스턴스를 생성함과 동시에 원하는 값으로 초기화를 할 수 있어 보다 간결하고 직관적이다. (아래 예제 참고)

class Car {
	String color;		
	String gearType;	
	int door;			

	Car() {} // 기본 생성자 (직접 생성자를 만들지 않더라도 자동으로 기본 생성자 추가)

	Car(String c, String g, int d) { // 매개변수가 있는 생성자
		color = c;
		gearType = g;
		door = d;
	}
}

class CarTest {
	public static void main(String[] args) {
		Car c1 = new Car(); // Car c1은 기본 생성자에서 값을 초기화해주는 과정이 있다.
		c1.color = "white";
		c1.gearType = "auto";
		c1.door = 4;

		Car c2 = new Car("white", "auto", 4);
	}
}