본문 바로가기
카테고리 없음

super this

by 수수남매 2023. 10. 19.
  • 예외 처리 공부하던 중 Exception을 상속한 클래스의 생성자에 super("어쩌고 저쩌고")를 만남...

  • super는 부모 클래스에 접근하는 거 아닌가? super()는 또 무엇일까?
    - 자식 클래스의 객체가 만들어질 때 부모 클래스의 객체도 같이 포함하여 만들어짐
    - super()는 부모 클래스의 생성자 호출임
    - 고로 super("어쩌고 저쩌고")는 Exception 클래스의 public Exception (String message) {}를 호출한 것. 그런데...
// 문제의 발단
public class BadInputException extends Exception {
    public BadInputException(String type) {
        super("잘못된 입력입니다! " + type + "을(를) 입력해주세요!");
    }
}

// Exception의 생성자를 찾아보니 다시 super()임...
public Exception(String message) {
	super(message);
}

// Exception이 상속받은 Throwable의 생성자를 찾아 봄
public class Throwable implements Serializable {
    // private 변수 detailMessage 선언
    private String detailMessage;
    // 생성자 발견, 근데 this.detailMessage = message라고 해야 되는 거 아닌가??
    public Throwable(String message) {
        fillInStackTrace();
        detailMessage = message;
    }
}

-> chatGPT야 왜 이런 건지 가르쳐줘!