본문 바로가기
Programming/Java * Spring

[Java] 08. 매서드 오버라이딩(Method Overriding), 오버로딩과의 차이

by 고막고막 2019. 3. 26.

매서드 오버라이딩(Method Overriding)

  • 부모가 이미 구현해 놓은 매서드를 대신하거나 추가 확장하는 것
  • 즉, 자식 클래스에 부모 매서드와 동일한 매서드를 구현하는 것
  • 부모 참조변수에 담아도 실제 자식 객체의 매서드를 호출하게 됨(편의성 > 일관성)
  • 그러나, 부모 참조변수에서는 자식 객체의 매서드 호출 불가
  • 장점: 매개변수를 최상위 부모변수로 매서드 1개만 만들면 된다 !!!!
  • 부모(Generalization - 일반적), 자식(Realization - 구체적)
public class Speaker {
  private int volumeRate;
  void showCurrentState() {
    System.out.println("볼륨 크기: +volumeRate");
  }
  void setVolume(int vol) {
    volumeRate = vol;
  }

public class BaseEnSpeaker extends Speaker {
  private int baseRate;
    // 부모의 기능에 추가(확장)
  void showCurrentState() {
    super.showCurrentState();
    System.out.println("베이스 크기: "+baseRate);
  }
    // 부모 기능을 대신함(덮어쓰기)
  void showCurrentState() {
    System.out.println("베이스 크기: "+baseRate);
  }
  void setBaseRate(int base) {
    baseRate = base;
  }

public class OverridingMain {
  public static void main(String[] args) {
    BaseEnSpeaker base = new BaseEnSpeaker();
    base.setVolume(10);
    base.setBaseRate(20);
    base.showCurrentState();
  }


오버로딩(Overloading)과 오버라이딩(Overriding)의 차이

  • Overloading(과적합) : 매개변수는 다른 같은 이름의 함수를 여러개 사용
  • Overriding(Over + Riding) : 부모가 구현해 놓은 기능에 올라탐