Java

[Java 기초] 생성자란? this 키워드는 왜 필요할까?

뭉뭉규 2025. 5. 4. 21:36

Java 에서 클래스를 만들다 보면 자연스럽게 만나게 되는 문법이 바로 생성자this 키워드이다.

 

예를 들어 아래 코드가 있다고 하자.

public class Member {
    private Long id;
    private String name;
    private Grade grade;
	
    //생성자 정의
    public Member(Long id, String name, Grade grade) {
        this.id = id;
        this.name = name;
        this.grade = grade;
    }
}

 

생성자란 무엇인가?

생성자는 객체를 만들 때 초기값을 설정해주는 메서드이다.

Java에서 객체를 만들 때는 new 키워드를 사용한다.

Member member = new Member(1L, "Moong", Grade.VIP);

이때 Member 클래스의 생성자가 자동으로 호출되며,

객체 내부의 필드(id, name, grade)에 우리가 전달한 값이 들어가게 된다.

즉, 생성자는 객체가 만들어질 때 필드에 값을 넣어주는 메서드라고 보면 된다.

생성자를  왜 쓸까?

Java는 생성자를 생략하면 기본 생성자를 자동으로 만들어준다.

하지만 객체를 만들 때 값을 반드시 넣도록 강제하고 싶을 땐, 아예 생성자에 매개변수를 넣는 방식이 좋다.

 

this 키워드는 왜 쓸까?

생성자 안을 보면 아래처럼 this.id = id; 와 같은 코드가 반복된다.

public Member(Long id, String name, Grade grade) {
    this.id = id;
    this.name = name;
    this.grade = grade;
}

this는 현재 객체 자기 자신을 가르키는 키워드로, 주로 필드와 매개변수 이름이 같을 때 구분용으로 사용한다.

왜 이렇게 this. 를 붙일까?

Java에서는 변수 이름이 같을 때 우선순위가 있다.

  • 생성자 안의 id는 매개변수를 의미한다.
  • 그래서 id = id; 라고 쓰면 자기 자신한테 복사하는 셈이 되어 아무 의미가 없다. (둘 다 매개변수 id를 가르킨다.)

그래서 오른쪽 id(매개변수)를 왼쪽 필드 this.id에 넣기 위해 this를 붙여줘야 한다.

this.id = id; // 오른쪽 id(매개변수)를 왼쪽 필드 this.id에 넣음
  • this.id 는 현재 객체의 필드
  • id는 생성자의 매개변수

이렇게 해야 비로소 필드에 값이 제대로 들어가게 된다.