[Java] 생성자, this(), super()

이다혜·2023년 10월 25일
0

Java

목록 보기
7/23
post-thumbnail

생성자(constructor)

  • 객체의 생성과 동시에 호출되는 함수
  • 변수를 초기화하기 위해 필요

생성자 특징

  • 반환값이 없다.
  • 메서드 오버로딩이 가능

생성자 선언 문법

  • 매개변수가 없는 생성자
    클래스 이름() {...}
  • 매개변수가 있는 생성자
    클래스 이름(인수1, 인수2, ...) {...}

생성자 호출

  • new 키워드를 사용하여 객체를 생성할 때 자동으로 호출

기본 생성자

  • 하나 이상의 생성자가 정의되어 있어야 하기 때문에 컴파일 시 생성자가 하나도 없으면 자동으로 매개변수가 없는 생성자를 추가한다.
  • 매개변수가 있는 생성자를 하나라도 정의했으면 기본 생성자는 자동으로 추가되지 않는다.

생성자 연쇄 호출

  • 생성자가 호출될 때 다른 클래스를 상속하고 있으면 부모 클래스의 생성자를 자동으로 호출한다.
  • 예제
public class Main {
    public static void main(String[] args) {
        new 사람();
    }
}
class 생물 {
    생물() {
        System.out.println("생물이 생성되었습니다.");
    }
}
class 동물 extends 생물 {
    동물() {
        // super(); // 부모 클래스의 생성자를 호출합니다. 생략가능합니다.
        System.out.println("동물이 생성되었습니다.");
    }
}
class 사람 extends 동물 {
    사람() {
        super();
        System.out.println("사람이 생성되었습니다.");
    }
}
  • 실행 결과
    생물이 생성되었습니다.
    동물이 생성되었습니다.
    사람이 생성되었습니다.

this() 메서드

  • 생성자 내부에서만 사용 가능
  • 같은 클래스의 다른 생성자를 호출할 때 사용
  • this()를 통해 생성 책임을 위임하면 super()가 호출되지 않는다.

super() 메서드

  • 부모 클래스의 생성자를 호출할 때 사용
  • 명시하지 않아도 모든 자식 클래스의 생성자 첫 줄에 자동으로 추가된다.

0개의 댓글