Java 생성자 이해: 초기화와 모범 사례
생성자는 객체가 생성될 때 이를 초기화합니다. 클래스와 같은 이름을 가지며 문법적으로 메서드와 유사합니다. 그러나 생성자는 명시적 반환 타입이 없습니다.
일반적으로 생성자를 사용하여 클래스에서 정의한 인스턴스 변수들에 초기값을 주거나, 완전히 형성된 객체를 생성하는 데 필요한 기타 시작 절차들을 수행합니다.
모든 클래스는 생성자를 가지며, 여러분이 정의하든 안 하든 Java는 자동으로 모든 멤버 변수를 0으로 초기화하는 기본 생성자를 제공합니다. 그러나 일단 여러분 자신의 생성자를 정의하면 기본 생성자는 더 이상 사용되지 않습니다.
문법
다음은 생성자의 문법입니다:
class ClassName {
ClassName() { }
}
Java는 두 가지 유형의 생성자를 허용합니다:
인수 없는 생성자
이름에서 알 수 있듯 Java의 인수 없는 생성자는 매개변수를 받지 않으며, 대신 이 생성자들을 사용하여 메서드의 인스턴스 변수들이 모든 객체에 대해 고정된 값으로 초기화됩니다.
예제
Public class MyClass {
Int num;
MyClass() {
num = 100;
}
}
다음과 같이 생성자를 호출하여 객체를 초기화합니다:
public class ConsDemo {
public static void main(String args[]) {
MyClass t1 = new MyClass();
MyClass t2 = new MyClass();
System.out.println(t1.num + " " + t2.num);
}
}
이 코드는 다음 결과를 생성합니다:
100 100
매개변수 있는 생성자
대부분의 경우 하나 이상의 매개변수를 받는 생성자가 필요합니다. 매개변수는 메서드에 추가하는 것과 같은 방식으로 생성자에 추가되며, 생성자 이름 뒤 괄호 안에 선언하면 됩니다.
예제
생성자를 사용하는 간단한 예제입니다:
// 간단한 생성자.
class MyClass {
int x;
// 다음은 생성자
MyClass(int i ) {
x = i;
}
}
다음과 같이 생성자를 호출하여 객체를 초기화합니다:
public class ConsDemo {
public static void main(String args[]) {
MyClass t1 = new MyClass( 10 );
MyClass t2 = new MyClass( 20 );
System.out.println(t1.x + " " + t2.x);
}
}
이 코드는 다음 결과를 생성합니다:
10 20