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

자바(Java) 생성자와 메소드의 차이점 완벽 정리

생성자(Constructor)는 객체를 생성하고 초기화하기 위해 사용되는 특수한 메소드입니다. 반면 일반 메소드(Method)는 특정 문장이나 로직을 실행하는 역할을 담당합니다. 두 개념은 이름만 들으면 비슷해 보이지만, 용도와 동작 방식에서 뚜렷한 차이가 있습니다.

아래 표는 자바에서 생성자와 메소드의 핵심적인 차이점을 정리한 것입니다.

번호구분 기준생성자(Constructor)메소드(Method)
1목적객체를 생성하고 초기화하는 데 사용됩니다.특정 문장이나 작업을 실행하는 데 사용됩니다.
2호출 주체시스템에 의해 암묵적으로(자동으로) 호출됩니다.프로그램 코드 내에서 명시적으로 호출해야 합니다.
3호출 시점new 키워드로 객체를 생성할 때 호출됩니다.코드에서 해당 메소드를 호출할 때 실행됩니다.
4반환 타입반환 타입을 가질 수 없습니다.반환 타입을 가질 수 있습니다(void 포함).
5객체 관계아직 존재하지 않는 객체를 초기화합니다.이미 존재하는 객체를 통해서만 호출할 수 있습니다.
6이름 규칙클래스 이름과 반드시 동일해야 합니다.클래스 이름과 같은 이름을 사용할 수 없습니다.
7상속하위 클래스(서브클래스)에 상속되지 않습니다.하위 클래스에 상속됩니다.

생성자 vs 메소드 예제 코드

다음 예제는 생성자와 메소드가 각각 어떻게 호출되고 동작하는지 보여줍니다. 객체를 생성하는 순간 생성자가 자동으로 실행되고, 이후 init() 메소드를 명시적으로 호출하면 메소드가 실행되는 것을 확인할 수 있습니다.

JavaTester.java

public class JavaTester {
    int num;
    JavaTester(){
        num = 3;
        System.out.println("Constructor invoked. num: " + num);
    }
    public void init(){
        num = 5;
        System.out.println("Method invoked. num: " + num);
    }
    public static void main(String args[]) {
        JavaTester tester = new JavaTester();
        tester.init();
    }
}

실행 결과

Constructor invoked. num: 3
Method invoked. num: 5

위 출력 결과에서 알 수 있듯이, new JavaTester()로 객체를 생성하는 순간 생성자가 먼저 실행되어 num이 3으로 초기화됩니다. 그다음 tester.init()을 직접 호출했을 때 메소드가 실행되며 num 값이 5로 변경됩니다. 이처럼 생성자는 객체 생성 시점에 자동으로 동작하고, 메소드는 필요할 때마다 명시적으로 호출하여 사용한다는 점이 가장 큰 차이입니다.