17. super

강태석·2022년 8월 18일
0

Java 기초

목록 보기
17/24

super 키워드

  • 클래스의 상속관계에서 자식 클래스가 부모 클래스를 가리키는 예약어.

사용 방법

  • 멤버변수 이름 앞에 명시
    -> 부모 클래스의 멤버변수를 의미한다.
    하지만 부모클래스의 멤버변수는 이미 모두 상속되어 있기 때문에 이 경우에는 this 키워드를 사용하는 것과 동일한 결과이기에 잘 사용하지 않는다.
  • 메서드 이름 앞에 명시
    -> 부모 클래스의 메서드를 의미한다.
    -> 재정의 되지 않은 메서드 : 이미 상속되어 있기 때문에 this 키워드를 사용하는 것과 동일한 결과를 갖는다.
    -> 재정의된 메서드 : Override 된 메서드 이름 앞에 사용하게 되면 재정의 되기 이전의 원본 메서드를 의미한다.
  • 키워드 자체를 메서드처럼 사용
    -> 부모 클래스의 생성자를 의미한다.

super 활용

super 와 this의 차이점

Hello 클래스가 Korean에 상속되고, Korean클래스가 say() 메서드를 Override 처리하게 되면 Korean 클래스의 객체는 더 이상 부모의 say() 메서드에 접근할 수 없게 된다.
만약 부모 클래스가 가지고 있는 say()메서드에 추가적인 기능을 구현하고자 한다면 부모의 코드를 그대로 복사해서 사용해야 할 것이다.
원본 기능에 대한 수정이 발생할 경우 부모 클래스와 자식 클래스를 모두 수정해야 하기 때문에 소스코드의 유지보수 효율성이 떨어지게 된다.
super 키워드는 부모 클래스의 메서드를 호출하는 기능을 가지고 있기 때문에, Override된 자식 클래스의 메서드에서 super 키워드를 사용하면, 재정의 되기 이전의 부모 클래스에 대한 메서드를 호출할 수 있다.

0개의 댓글