생성자(Constructor)는 메서드와 비슷한 역할을 하며, 클래스의 객체가 생성되는 시점에 자동으로 호출됩니다. 주로 클래스의 인스턴스 변수를 초기화하는 용도로 사용되며, 생성자의 이름은 반드시 해당 클래스의 이름과 동일해야 합니다.
생성자의 반환 타입
- 생성자는 어떠한 반환 타입(return type)도 가지지 않습니다.
- 메서드가 반환하는 값의 데이터 타입은 다양할 수 있으며, 메서드의 반환 타입은 그 값의 타입을 나타냅니다.
- 생성자는 명시적으로 어떤 값도 반환하지 않지만, 내부적으로는 자신이 속한 클래스의 인스턴스를 반환합니다.
예제 1: 기본 생성자와 매개변수가 있는 생성자
다음은 Java에서 생성자를 활용한 간단한 예제입니다.
public class Sample{
public Sample(){
System.out.println("Hello how are you");
}
public Sample(String data){
System.out.println(data);
}
public static void main(String args[]){
Sample obj = new Sample("Tutorialspoint");
}
}위 코드에서는 두 개의 생성자가 정의되어 있습니다. 하나는 매개변수가 없는 기본 생성자이고, 다른 하나는 문자열을 매개변수로 받는 생성자입니다. main 메서드에서 문자열을 전달하여 객체를 생성했기 때문에 매개변수가 있는 생성자가 호출됩니다.
실행 결과
Tutorialspoint
예제 2: 생성자를 이용한 인스턴스 변수 초기화
생성자의 가장 대표적인 용도는 객체 생성 시 인스턴스 변수를 초기화하는 것입니다. 아래 예제를 통해 확인해 보겠습니다.
class Student{
Integer age;
Student(Integer age){
this.age = age;
}
public void display() {
System.out.println("Value of age: "+this.age);
}
}
public class GenericsExample {
public static void main(String args[]) {
Student std = new Student(25);
std.display();
}
}Student 클래스의 생성자는 매개변수로 전달받은 나이(age) 값을 this 키워드를 사용해 인스턴스 변수에 저장합니다. 이후 display() 메서드를 호출하면 초기화된 값이 출력됩니다.
실행 결과
Value of age: 25
정리
생성자는 반환 타입을 명시하지 않으며, void조차 붙이지 않습니다. 만약 생성자에 반환 타입을 작성하면 Java 컴파일러는 이를 일반 메서드로 인식하므로 주의해야 합니다. 생성자는 객체 생성 시점에 자동으로 호출되어 인스턴스 변수를 초기화하고, 결과적으로 해당 클래스의 객체(인스턴스)를 반환하는 특별한 멤버입니다.