▣ 자바 상속과 super() 예제

 

과거 포스팅에서 자바에서 자신의 클래스를 의미하는 객체로 쓰이는 "this"에 대해서 알아봤었는데요. 이것과 유사한 개념으로 "super"라는 것이 있는데 이것은 상속관계에서 상위 클래스를 가리키는 것입니다. 상속을 받게 되더라도 생성자는 내려받을 수 없는데요. super를 이용하면 하위 클래스에서 상위 클래스의 생성자를  호출해서 사용할 수도 있습니다.

 

 

 ■ [this]와 [상속]에 대해 좀 더 궁금하시다면 다음 포스팅을 참고하시길 바랄게요.

 

자바 this : http://kd3302.tistory.com/38

자바 상속의 개념과 Object클래스 :  http://kd3302.tistory.com/142

 

 

예제를 보면 BBB가 AAA를 상속받은 상태인데요. 자신의 클래스 내에서 자신을 가리킬때는 [this]를 사용하고 , 상위 클래스의 멤버를 카리킬때는 [super]를 사용하고 있는걸 확인할 수 있습니다.

 


 

이 개념은 생성자를 지정할 때도 이용될 수 있습니다. 상속 관계에서 상위 생성자를 이용하기 위해서 super()를 이용하는 예제를 살펴보겠습니다.

 

 

 

■ AAA클래스 안에서는 생성자들의 매개변수값을 서로 다르게 하면서  this()를 이용해서 자기 자신의 생성자를 호출하고 있으며, BBB는 AAA를 상속받은 상태에서 super()를 이용해서 상위 클래스인 AAA의 생성자를 호출하고 있는 모습입니다.

 

■ 여기서 하나 기억해야 할 점은 super()나 this()는 생성자 안쪽의  제일 첫줄에 반드시 하나만 사용되어야 한다는 것입니다. 그리고 상속을 받았는데, this(), super() 둘 중 하나도 입력되어 있지 않다면 JVM은 매개변수가 없는 [super()]가  있다고 인식하게 됩니다.

 

이렇게 상속을 받은 클래스에서 상위 클래스의 생성자를 호출하여 사용할 수 있는데요. 생성자는 상속을 받을 수 없기 때문에 이런 방법을 이용하는 것입니다.  이렇게 해서 자바의 상속에서 super90의 역할에 대해서 알아봤습니다.

Posted by 차케요