답변 1
2
Java에서 상속을 받는 클래스는 반드시 super() 를 호출해서 상속을 하는 부모 클래스의 생성자를 호출해야 하는데요
이 때 부모 클래스 (Class A) 가 다른 생성자 없이 기본 생성자만 존재한다면, super(); 를 호출하지 않아도 자바에서 대신 처리해주므로 명시적으로 선언하지 않아도 된다는 뜻으로 보입니다!
만약 아래와 같이 부모 클래스인 ClassA 가 기본 생성자가 아닌 패러미터를 가지는 생성자를 가질 시
하위 클래스(Class B) 의 생성자에서는 super(any int); 를 반드시 호출해야 합니다.
즉 주석의 기본 생성자 생략 가능 주석은
부모 클래스가 기본 생성자만 존재 할 시
기본 생성자 호출 super(); 는 사용해도, 안해도 무방하다(생략 가능하다)
는 의미로 보이네요!
넵 맞습니다!
this(), super() 는 모두 생성자 매서드의 맨 첫 부분에서 선언되어야 하는데요
위처럼 ClassA(부모 클래스) 가 생략 가능한 기본 생성자를 가지지 않으면 this();(자기 자신의 생성자) 호출이 불가능합니다.
즉 말씀해주신 부분에서도 부모 클래스의 기본 생성자가 숨겨져 있습니다.
하지만
this(a, 0); // 기본 생성자 생략 가능
주석의 위치 때문에 조금 모호한 표현처럼 느껴지긴 하네요 😢
this(a, 0); 옆에 주석을 말씀하시는건가요?