[JAVA] 자바 상속과 Super() 예제
▣ 자바 상속과 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의 역할에 대해서 알아봤습니다.