- 예외 처리 공부하던 중 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야 왜 이런 건지 가르쳐줘!