JAVA

오버라이드(override)

싸블양 2025. 10. 12. 11:03

인터페이스의 unit()을 안 바꾼 경우

먼저 인터페이스 그대로 사용할 때 

public interface MeterInterface {
    double measure();
    String result();

    default String unit() {
        return "ms"; // 기본값은 밀리초
    }
}

그리고 이걸 구현한 클래스:

public class StopWatch implements MeterInterface {
    @Override
    public double measure() {
        return 12.3;
    }

    @Override
    public String result() {
        return measure() + " " + unit();
    }
}

public class Main {
    public static void main(String[] args) {
        MeterInterface meter = new StopWatch();
        System.out.println(meter.result());
    }
}

 

출력:

12.3 ms


unit()을 따로 안 만들었으니까,
인터페이스에서 준 기본값 "ms"를 그대로 씀.


오버라이드(Override)한 경우

이제 단위를 "seconds"로 바꿔보자

public class StopWatch implements MeterInterface {
    @Override
    public double measure() {
        return 12.3;
    }

    @Override
    public String result() {
        return measure() + " " + unit();
    }

    // 👇 여기서 인터페이스의 unit()을 '덮어씀' (override)
    @Override
    public String unit() {
        return "seconds";
    }
}

출력:

12.3 seconds

오버라이드(Override) 뜻 쉽게 설명

“부모(또는 인터페이스)에서 만들어둔 메서드를
자식(또는 구현 클래스)이 자기 버전으로 다시 정의하는 것

예를 들어 비유하자면 

부모 “기본으로 밥 먹는 방법은 젓가락이야”
자식 “난 숟가락으로 먹을래!”
결과 자식이 부모의 규칙을 ‘덮어쓴다’ → override한다

  • 이름은 같고
  • 기능 내용만 다르게 만드는 것
    이걸 오버라이드라고 한다.

'JAVA' 카테고리의 다른 글

this.의 의미  (0) 2025.11.03
JAVA에서 todo주석 쓰는법  (0) 2025.10.18
get(Accessor) 과 set(Mutator)  (0) 2025.10.09
재할당 vs 내부 상태 변경  (0) 2025.10.08
자바의 generic 정리  (0) 2025.10.06