인터페이스의 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 |