Computer >> 컴퓨터 >  >> 프로그래밍 >> Java

자바(Java) 생성자란 무엇일까? 개념부터 예제까지 한 번에 이해하기

자바에서 생성자(Constructor)는 문법적으로 일반 메서드와 매우 유사합니다. 다만 두 가지 중요한 차이점이 있습니다. 첫째, 생성자의 이름은 반드시 클래스 이름과 동일해야 하며, 둘째, 생성자는 반환 타입을 가지지 않습니다.

생성자는 개발자가 직접 호출할 필요가 없습니다. 객체를 생성(인스턴스화)하는 순간 JVM에 의해 암묵적으로 자동 호출됩니다. 생성자의 핵심 목적은 클래스의 인스턴스 변수를 초기화하여 객체가 올바른 상태로 시작될 수 있도록 하는 것입니다.

생성자의 기본 문법

생성자는 아래와 같은 형태로 정의합니다.

class ClassName {
    ClassName() {
        // 초기화 코드
    }
}

생성자 정의 시 반드시 기억해야 할 규칙

  • 생성자에는 반환 타입이 없습니다. void조차 붙이지 않습니다.
  • 생성자의 이름은 클래스 이름과 정확히 같아야 합니다.
  • 생성자는 abstract, final, static, synchronized 키워드를 사용할 수 없습니다.
  • 접근 제어자(public, protected, private)는 생성자와 함께 사용할 수 있습니다.

참고로, 클래스에 생성자를 하나도 정의하지 않으면 컴파일러가 자동으로 아무 작업도 하지 않는 기본 생성자(default constructor)를 추가해 줍니다. 반대로 매개변수가 있는 생성자를 직접 정의하면 기본 생성자는 더 이상 자동으로 만들어지지 않으므로 주의해야 합니다.

예제 코드

public class Test {
   int num;
   String data;
   
   Test(){
      num = 100;
      data = "sample";
   }
   
   public static void main(String args[]){
      Test obj = new Test();   // new 연산자와 함께 생성자가 자동 호출됨
      System.out.println(obj.num);
      System.out.println(obj.data);
   }
}

실행 결과

100
sample

위 예제에서 new Test()가 실행되는 순간 생성자 Test()가 자동으로 호출되어 인스턴스 변수 numdata가 각각 100과 "sample"로 초기화된 것을 확인할 수 있습니다.