super - 부모 참조.
“부모와 자식의 필드명이 같거나 메서드가 오버라이딩 되어 있으면, 자식에서 부모의 필드나 메서드를 호출할 수 없습니다.”
- 이때 super키워드를 사용하면 부모를 참조할 수 있습니다.
- 
super는 이름 그대로 부모 클래스에 대한 참조를 나타냅니다.
다음 예를 봅시다.
- 부모의 필드명과 자식의 필드명 둘 다 value로 똑같습니다.
- 메서드도 hello()로 자식에서 오버라이딩 되어 있습니다.- 이 때 자식 클래스에서 부모 클래스의 value와hello()를 호출하고 싶다면super키워드를 사용하면 됩니다.
 
- 이 때 자식 클래스에서 부모 클래스의 

Parent
package extends1.super1;
public class Parent {
  public String value = "parent";
  public void hello() {
    System.out.println("Parent.hello");
  }
}
Child
package extends1.super1;
public class Child extends Parent {
  public String value = "child";
  @Override
  public void hello() {
    System.out.println("Child.hello");
  }
  public void call() {
    System.out.println("this value = " + this.value); // this 생략 가능
    System.out.println("super value = " + super.value);
    this.hello(); // this 생략 가능
    super.hello();
  }
}
call() 메서드를 봅시다.
- 
this는 자기 자신의 참조를 뜻합니다.this는 생략할 수 있습니다.
- 
super는 부모 클래스에 대한 참조를 뜻합니다.
- 필드 이름과 메서드 이름이 같지만 super를 사용해서 부모 클래스에 있는 기능을 사용할 수 있습니다.
Super1Main
package extends1.super1;
public class Super1Main {
  public static void main(String[] args) {
    Child child = new Child();
    child.call();
  }
}
실행 결과
this value = child
super value = parent
Child.hello
Parent.hello
- 실행 결과를 보면 super를 사용한 경우 부모 클래스의 기능을 사용한 것을 확인할 수 있습니다.
super 메모리 그림

 devkobe24.com
                devkobe24.com
            