자바[중요] 상속 메서드 오버라이딩/ 부모 메서드 사용

김담희·2021년 9월 15일
0

JAVA

목록 보기
11/12
post-thumbnail

메서드 재정의 (@Override)

  • 부모 클래스의 상속 메서드 수정해 자식 클래스에서 재정의 하는 것을 말한다.
  • 메서드 재정의 조건​

    • 부모 클래스의 메서드와 동일한 시그니처를 가져야 한다.

    • 접근 제한을 더 강하게 오버라이딩 불가하다.
      (public 을 default나 private으로 수정이 불가하다)
      (반대로 default는 public으로 수정 가능하다)

  • 새로운 예외(Exception) throws는 불가하다.

오버라이딩의 조건

  • 접근 제어자는 부모 클래스의 메서드보다 좁은 범위로변경할 수 없다.
  • 부모 클래스의 메서드보다 많은 수의 예외를 선언할 수 없다.

* 중요! 부모 클래스의 메서드를 자식 클래스에서 오버라이딩 할 때

  • 선언부가 부모 클래스의 메서드와 일치해야 한다.
  • 접근 제어자를 부모 클래스의 메서드보다 좁은 범위로 변경할 수 없다.

  • 예외는 부모 클래스의 메서드보다 많이 선언할 수 없다.

@Override 어노테이션

  • 컴파일러에게 부모 클래스의 메서드 선언부와 동일한지 검사를 지시한다.
  • 정확한 메서드 재정의를 위해 붙어주면 좋다.

메서드 재정의 효과

  • 부모 메서드는 숨겨지는 효과가 발생한다.(재정의된 자식 메서드 실행된다.)

부모 메서드 사용(super)

  • 메서드 재정의는 부모 메서드 숨기는 효과가 있다.
  • 자식 클래스에서 수정되기 전 부모 메서드 호출 - super 사용!

final 키워드의 용도

  • final 필드: 수정 불가한 필드이다.

  • final 클래스: 부모로 사용 불가한 클래스 이다.

  • final 메서드: 자식이 재정의할 수 없는 메서드 이다.

상속할 수 없는 final 클래스

-자식 클래스 만들지 못 하도록 final 클래스로 생성할 수 있다.

★오버라이딩(Overriding) 부모 메서드 사용(super)★[중요..!!]


오버라이딩(Overriding)과 부모 메서드를 사용 super 하는 과정을 한 번에 볼 수 있는 클래스이며,
클래스 메서드를 사용할 때, 많이 응용되는 코딩 이다.

가장 아래 쪽에는 출력되는 값도 나와있으니 확인해보세요.



자식 Tv 클래스와 Computer클래스가 부모 Product클래스 를 상속받았다.

super로 부모 메서드를 사용하여 price와 bonusPoint 값을 대입하고,
Object 오버라이딩으로 자식 메서드에서 return 값을 변경했다.

Buyer b, Tv t, Computer com 객체를 이용하여 주소를 찾아 값을 출력한 클래스 이다.

어떻게 값을 찾고, 어떤 값들을 가지고 있는지 한 눈에 알아 볼 수 있도록 설계도를 그려보았다.

"설계도를 많이 그려보면서 조금 더 코딩이 눈에 확연하게 잘 들어올 수 있도록 반복 또 반복이다!" - 함께해요

0개의 댓글