세상에 모든 자손 클래스는
생성자의 첫줄에 super() 메서드를 호출 한다.
하지만, 특별한 경우가 아니라면, super()은 생략 되어 있다.
아래의 그림을 보자.
하위 클래스에 무언가 오류가 뜨는것을 볼 수 있다.
이 오류는, 언뜻 보면 클래스에 이상이 있는것 처럼 보일 수도 있겠지만,
사실은 자식 클래스의 생성자에서 일어나는 오류 이다.
하지만, 자식 클래스에 생성자를 만들어 놓지 않았기 때문에
표현할 곳이 없어서 클래스에 빨간줄이 가는 모습을 볼 수 있다.
여기서 super() 메서드의 개념을 알아야 한다.
super() = this()와 유사 하다.
super() : 자신의 부모 클래스의 생성자.
this() : 자기 자신 클래스의 생성자.
클래스 A의 생성자의 인자값이 int 이기 때문에, 인자값을 int 타입으로 맞춰 주면 된다.
정리 :
해결방법은 2개가 있는데, 위의 방법은
부모의 디폴트 생성자 대신에, 다른 생성자를 활용해서
자식의 생성자에 super(); 메서드를 넣어주는 것이다.
부모의 생성자의 인자값과, 자식의 생성자에 super(); 메서드의
인자값은 맞춰 줘야 한다.
---------------------------------------------------------------------------------------
다른 방법으로는,
디폴트 생성자를 만들어주기 이다.
하지만, 이 방법은 실무에서 사용 하지 않는다.
이유 : 설계를 할 때 한글코딩 하고 코딩을 하는데,
이 상황은 설계의 문제가 아니라, 코딩에서의 문제 이다.
설계 자체를 바꿔버리는 행동 이기 때문에, 절대로 이렇게 활용을 하지 않는다.
예시를 이클립스에서 구현해 보았다. (아래 참고)