[JAVA] 생성자

Coastby·2022년 9월 23일
0

LIKELION Back-End School

목록 보기
11/61

⭐️ 생성자 및 디폴트 생성자에 대하여 설명하시오.

○ 생성자의 이해

생성자의 역할

  • 인스턴스가 생성될 때 호출되는 ‘인스턴스 초기화 메서드’이다.
    • 인스턴스 변수의 초기화 작업
    • 인스턴스 생성 시에 실행되어야 할 작업

💡 연산자 new가 인스턴스를 생성하는 것이지, 생성자가 인스턴스를 생성하는 것이 아니다.
생성자는 단순히 인스턴스 변수들의 초기화에 사용되는 조금 특별한 메소드일 뿐다.

생성자의 조건

생성자 역시 메서드처럼 클래스 내에 선언되며, 구조도 유사하다.

  • 생성자의 이름은 클래스의 이름과 같다.
  • 생성자는 리턴 값이 없다.
클래스 이름 (타입 변수명, 타입 변수명, ...) {
	//인스턴스 생성 시 수행될 코드,
	//주로 인스턴스 변수의 초기화 코드
}

//예시 - 매개 변수가 없는 경우
TV () {
}

//예시 - 매개 변수가 있는 경우
TV (int inch) {
	this.inch = inch;
}
  • 클래스의 접근 제어자가 public인 경우에는 기본 생성자로 public 클래스이름() {}이 추가된다.

○ 기본 생성자

💡 기본 생성자
클래스 내에 정의된 생성자가 없을 때 컴파일러가 자동으로 추가해주는 생성자이다.

  • 기본 생성자 (default constructor) 는 매개 변수가 없는 생성자이다.
  • 개발자가 생성자를 하나도 정의하지 않으면 자바 컴파일러는 기본 생성자를 자동으로 만든다.
  • 생성자가 하나라도 있으면 디폴트 생성자는 생성되지 않는다.

○ 매개변수가 있는 생성자

생성자도 메서드처럼 매개변수를 선언하여 호출 시 값을 넘겨받아서 인스턴스의 초기화 작업에 사용할 수 있다.

클래스를 작성할 때 다양한 생성자를 제공함으로써 인스턴스 생성 후에 별도로 초기화를 하지 않아도 되도록 하는 것이 바람직하다.

class TV {
    String brand;
    int madeYear;
    int displayInch;

		TV () {
        brand = "undefined";
        madeYear = 0000;
        displayInch = 0;
    }

    TV (String brand, int madeYear, int displayInch) {

        this.brand = brand;
        this.madeYear = madeYear;
        this.displayInch = displayInch;

    }
)

○ this(), this

⭐️ this 와 this 생성자는 무엇이며, 용도는?

this(), this(매개변수)

: 다른 생성자를 의미

  • 생성자의 이름으로 클래스이름 대신 this를 사용한다.
  • 한 생성자에서 다른 생성자를 호출할 때는 반드시 첫 줄에서만 호출이 가능하다.

this

: 인스턴스 자신을 가리키는 참조변수

  • 인스턴스 자신을 가리키는 참조변수, 인스턴스의 주소가 저장되어 있다.
  • 모든 인스턴스 메서드에 지역변수로 숨겨진 채로 존재한다. (컴파일러에서 자동으로 생성한다.)
  • 흔히 생성자에서 매개 변수 이름과 필드 이름이 동일한 경우에 혼동을 막기 위해서 사용한다.
  • static 메서드 (클래스 메서드)에서는 this를 사용할 수 없다.
    static 메서드는 인스턴스를 생성하지 않기 때문에 인스턴스가 존재하지 않을 수 있기 때문이다.
profile
훈이야 화이팅

0개의 댓글