생성자(Constructor)

Backend kwon·2023년 4월 16일

생성자

객체를 생성하는 역할을 하는 클래스의 구성 요소로, 인스턴스가 생성될 때 호출되는 인스턴스 초기화 메서드이다.
(new 키워드를 사용하여 객체를 생성할 때에 호출되는 것)

그러나, 생성자가 인스턴스를 생성하는 역할을 하는 것은 아니다.

인스턴스 생성을 담당하는 것은 new 키워드이며, 생성자는 인스턴스 변수들을 초기화하는 데 사용되는 특수한 메서드라 할 수 있다.

특징

  • 생성자의 이름은 반드시 클래스의 이름과 같아야 한다.
  • 생성자는 리턴 타입이 없다.
클래스명(매개변수) { // 생성자 기본 구조
	...생략...
}
  • 생성자도 오버로딩이 가능하므로 한 클래스 내에 여러 개의 생성자가 존재할 수 있다.

 

기본생성자

  • 모든 클래스에는 반드시 하나 이상의 생성자가 존재해야 한다

  • 만약 생성자가 클래스 안에 포함되어 있지 않은 경우에는 자바 컴파일러가 기본 생성자를 자동으로 추가해준다

  • 기본 생성자는 매개변수가 없는 생성자를 의미

 

매개변수가 있는 생성자

  • 매개변수가 있는 생성자는 메서드처럼 매개변수를 통해 호출 시에 해당 값을 받아 인스턴스를 초기화하는 데 사용된다.

  • 매개변수가 있는 경우에는 그 개수와 타입에 알맞게 생성자를 호출해주어야 한다.

 

this

  • 인스턴스 변수와 매개변수를 이름만으로는 구분하기가 어려워지는 문제가 발생하게 되는데, 이를 구분해 주기 위한 용도로 주로 사용되는 방법

  • this는 인스턴스 자신을 가리키며, 참조변수를 통해 인스턴스의 멤버에 접근할 수 있는 것처럼 this를 통해서 인스턴스 자신의 변수에 접근할 수 있는 것이다.

 

this()

같은 클래스 안에 메서드들끼리 서로 호출할 수 있었던 것처럼 생성자도 상호 호출이 가능하다.

  • this() 메서드는 자신이 속한 클래스에서 다른 생성자를 호출하는 경우에 사용한다.

this() 메서드 사용 조건

  1. this() 메서드는 반드시 생성자의 내부에서만 사용할 수 있다.

  2. this() 메서드는 반드시 생성자의 첫 줄에 위치해야 한다.

class Example  {
    public Example() {
        System.out.println("Example의 기본 생성자 호출!");
    };

    public Example(int x) {
        this(); //여기서 사용
        System.out.println("Example의 두 번째 생성자 호출!");
    }
}
profile
백엔드개발자를 향해서

0개의 댓글