Java

[Java] super 키워드

nc2u 2018. 10. 27. 20:11



키워드 super는 상속 관계에서 부모 클래스의 메소드나 필드를 명시적으로 참조하기 위하여 사용된다. 만약 부모 클래스의 메소드나 필드를 오버라이드한 경우에 super를 사용하면 부모 클래스의 메소드나 필드를 호출할 수 있다.

보통 메소드를 오버라이드할 때, 부모 클래스의 메소드를 완전히 대치하는 경우보다 내용을 추가하는 경우가 많다. 이런 경우에는 super 키워드를 이용하여 super 클래스의 메소드를 호출해 준 후에 자신이 필요한 부분을 추가해주는 것이 좋다.

/* Parent 클래스 */
class Parent {
    public void print() {
        System.out.println("부모 클래스의 print() 메소드");
    }
}
/* Child 클래스 */
public class Child extends Parent {
    public void print() {
        super.print();
        System.out.println("자식 클래스의 print() 메소드");
    }
    public static void main(String[] args) {
        Child obj = new Child();
        obj.print();
    }
}

[실행결과]부모 클래스의 print() 메소드
자식 클래스의 print() 메소드


super.메소드명() 형태로 부모 클래스의 메소드에 접근할 수 있음을 알 수 있는데, super() 형태로 부모 클래스의 생성자에 접근할 수도 있다. 다만 부모 클래스의 생성자에 매개 변수가 있는 경우라면 super(매개변수1, 매개변수2)와 같이 동일한 형태가 갖추어지지 않을 경우 오류가 발생한다.