[Java] super - 부모 참조

코드 속의 "진돌"·2024년 3월 10일
0
post-thumbnail

✅ 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자기 자신의 참조를 뜻한다. 생략 가능하다.
  • super부모 클래스에 대한 참조를 뜻한다.
  • 필드 이름과 메서드 이름이 같지만 super를 사용해서 부모 클래스에 있는 기능을 사용할 수 있다.



✏️ Super1Main

package extends1.super1;

public class Super1Main {

  public static void main(String[] args) {
    Child child = new Child();
    child.call();
  }
}



🖥️ 실행 결과

실행 결과를 보면 super를 사용한 경우 부모 클래스의 기능을 사용한 것을 확인할 수 있다.



⚙️ super 메모리 구조

profile
매일 성장하는 주니어 개발자의 기록📝

0개의 댓글