Java 상속 - super 부모 참조
부모와 자식 간 필드명이 같거나 메소드가 오버라이딩된 경우,
자식에서는 부모의 필드와 메소드를 사용할 수 없다.
사용할 수 없는 부모의 필드와 메소드를 호출하고 싶다면, super 키워드를 사용하여 부모를 참조하도록 한다.
super 는 부모 클래스에 대한 참조를 나타낸다.
아래 그림에서 value 와 world() 호출하고 싶다면 super 키워드를 사용한다.

코드로 확인해보기
src
└su (+)
├Child.Java (+)
├Parent.Java (+)
└Main.Java (+)
Parent.java
package su;
public class Parent {
public String value = "P";
public void world() {
System.out.println("this is Parent");
}
}
Child.java
package su;
public class Child extends Parent {
public String value = "C";
@Override
public void world() {
System.out.println("this is Child");
}
public void call() {
System.out.println("this is value = " + this.value);
System.out.println("super is value = " + super.value);
world();
super.world();
}
}
Main.java
package su;
public class Main {
public static void main(String[] args) {
Child child = new Child();
child.call();
}
}
실행 결과
this is value = C
super is value = P
this is Child
this is Parent
call() 메소드
- world() 코드는
this
.world() 으로 선언한 것과 같다. 자신의 world 메소드를 호출한다. super
는 부모 클래스 참조와 같다.- 자식 클래스의 필드 이름과 메소드가 같지만 super 키워드를 사용하여 부모 클래스의 기능을 사용할 수 있다.
super, this 용도
super, this 는 유사해 보이나 다르다.
- super: 부모의 클래스 참조를 가리키고 싶을 때 사용
- this: 본인의 참조 값을 가리키고 싶을 때 사용.
