본문 바로가기
Java (국비)/Java 이론

상속 2

by Hwanii_ 2023. 5. 15.
728x90

세상에 모든 자손 클래스는

생성자의 첫줄에 super() 메서드를 호출 한다.

하지만, 특별한 경우가 아니라면, super()은 생략 되어 있다.

 

아래의 그림을 보자.

 

 

하위 클래스에 무언가 오류가 뜨는것을 볼 수 있다.

?

이 오류는, 언뜻 보면 클래스에 이상이 있는것 처럼 보일 수도 있겠지만,

사실은 자식 클래스의 생성자에서 일어나는 오류 이다.

하지만, 자식 클래스에 생성자를 만들어 놓지 않았기 때문에

표현할 곳이 없어서 클래스에 빨간줄이 가는 모습을 볼 수 있다.

 

여기서 super() 메서드의 개념을 알아야 한다.

super()  = this()와 유사 하다.

super() : 자신의 부모 클래스의 생성자.

this() : 자기 자신 클래스의 생성자.

 

클래스 A의 생성자의 인자값이 int 이기 때문에, 인자값을 int 타입으로 맞춰 주면 된다.

해결

 

 

정리 : 

 

해결방법은 2개가 있는데, 위의 방법은

 

부모의 디폴트 생성자 대신에, 다른 생성자를 활용해서

자식의 생성자에 super(); 메서드를 넣어주는 것이다.

부모의 생성자의 인자값과, 자식의 생성자에 super(); 메서드의

인자값은 맞춰 줘야 한다.

 

---------------------------------------------------------------------------------------

 

다른 방법으로는,

 

디폴트 생성자를 만들어주기 이다.

하지만, 이 방법은 실무에서 사용 하지 않는다.


이유 : 설계를 할 때 한글코딩 하고 코딩을 하는데,
이 상황은 설계의 문제가 아니라, 코딩에서의 문제 이다.
설계 자체를 바꿔버리는 행동 이기 때문에, 절대로 이렇게 활용을 하지 않는다.

 

예시를 이클립스에서 구현해 보았다. (아래 참고)

 

 

 

반응형

'Java (국비) > Java 이론' 카테고리의 다른 글

상속 4  (0) 2023.05.15
상속 3  (0) 2023.05.15
상속  (0) 2023.05.15
next() 그리고 nextLine() 의 차이  (0) 2023.05.13
Java  (0) 2023.05.11