Home > Archive > Java_archive > ☕️[Java] super - 부모 참조

☕️[Java] super - 부모 참조
Java Programming Language

super - 부모 참조.

“부모와 자식의 필드명이 같거나 메서드가 오버라이딩 되어 있으면, 자식에서 부모의 필드나 메서드를 호출할 수 없습니다.”

  • 이때 super 키워드를 사용하면 부모를 참조할 수 있습니다.
  • super 는 이름 그대로 부모 클래스에 대한 참조를 나타냅니다.

다음 예를 봅시다.

  • 부모의 필드명과 자식의 필드명 둘 다 value로 똑같습니다.
  • 메서드도 hello()로 자식에서 오버라이딩 되어 있습니다.
    • 이 때 자식 클래스에서 부모 클래스의 valuehello()를 호출하고 싶다면 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 메모리 그림