Published on

항해99 플러스 백엔드 코스 6기 언어 사전 스터디 3주차 (2) - 생성자(Constructor) 와 this

Authors
  • avatar
    Name
    Kil Hyeon Jun
    Twitter

항해99 플러스 백엔드 코스 6기 언어 사전 스터디 3주차 - 생성자(Constructor)와 this

1. 생성자 (Constructor)

생성자란?

  • 객체를 생성할 때 호출되는 특수한 메소드
  • 객체의 초기화를 담당하며, 객체 생성 시 필요한 작업을 수행

생성자의 특징

  • 클래스 이름과 동일한 이름을 가짐
  • 반환 타입이 없음
  • 객체 생성 시 자동으로 호출됨
  • 여러 개의 생성자를 정의할 수 있음 (오버로딩)

기본 생성자 (Default Constructor)

  • 매개변수가 없는 생성자
  • 클래스에 생성자가 정의되어 있지 않을 때, 컴파일러가 자동으로 생성

필드 초기화

  • 생성자를 통해 객체의 필드를 초기화할 수 있음
  • 생성자를 통해 객체 생성 시 필요한 초기화 작업을 수행

생성자 오버로딩 (Constructor Overloading)

  • 여러 개의 생성자를 정의하여 다양한 초기화 방법을 제공
  • 매개변수의 타입, 개수, 순서에 따라 호출될 생성자가 결정
public class Person {
    String name;
    int age;

    // 기본 생성자
    public Person() {
        this.name = "Unknown";
        this.age = 0;
    }

    // 이름만 초기화하는 생성자
    public Person(String name) {
        this.name = name;
        this.age = 0;
    }

    // 이름과 나이를 초기화하는 생성자
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
}

2. this와 this()

this 키워드

  • 객체 자신을 가리키는 키워드
  • 인스턴스 변수와 지역 변수의 이름이 같을 때, 인스턴스 변수를 구분하기 위해 사용
public class Person {
    String name;
    int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    Person returnInstance() {
        return this;
    }
}

this() 메소드

  • 다른 생성자를 호출할 때 사용하는 특수한 메소드
  • 생성자 오버로딩 시 중복 코드를 줄이기 위해 사용
public class Person {
    String name;
    int age;

    public Person() {
        this("Unknown", 0);
    }

    public Person(String name) {
        this(name, 0);
    }

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
}

WARNING

생성자에서 다른 생성자를 호출할 때(this() 메소드)는 반드시 첫 줄에 위치해야 함
그렇지 않으면 컴파일 에러가 발생

3. 정리

  • 생성자는 객체를 초기화하는 특수한 메소드
  • 생성자는 클래스 이름과 동일한 이름을 가지며, 반환 타입이 없음
  • 생성자를 통해 객체 생성 시 필요한 초기화 작업을 수행
  • 생성자 오버로딩을 통해 다양한 초기화 방법을 제공
  • this 키워드를 통해 객체 자신을 가리키며, this() 메소드를 통해 다른 생성자를 호출할 수 있음
  • this() 메소드는 반드시 첫 줄에 위치해야 함