Java/자바 정리
71. static 메서드 – 인터페이스 자체에서 실행하는 유틸 기능
코딩하는냥이
2025. 5. 8. 14:46
반응형
이번 글에서는 인터페이스에서 정적(static) 메서드를 정의하고 사용하는 방법을 학습합니다.
default 메서드와 달리 static 메서드는 인터페이스 이름으로 직접 호출하며,
보통 공통적인 유틸리티 기능을 정의할 때 사용됩니다.
📦 인터페이스 코드 (RemoteControl.java)
package ch08.sec06;
public interface RemoteControl {
int MAX_VOLUME = 10;
int MIN_VOLUME = 0;
void turnOn();
void turnOff();
void setVolume(int volume);
default void setMute(boolean mute) {
if (mute) {
System.out.println("무음 처리합니다.");
setVolume(MIN_VOLUME);
} else {
System.out.println("무음 해제합니다.");
}
}
static void changeBattery() {
System.out.println("리모콘 건전지를 교환합니다.");
}
}
✔ static 메서드는 인터페이스명.메서드명()으로 호출
✔ 인스턴스를 생성하지 않아도 사용 가능
✔ 구현 클래스에서 재정의(overriding) 불가
📦 구현 클래스 – TV & 오디오
Television.java 와 Audio.java는 각각 RemoteControl을 구현하며,
turnOn(), setVolume(), setMute()를 필요에 따라 구현합니다.
(내용 생략 — 이전 글과 동일)
📌 실행 클래스 (RemoteControlExample.java)
package ch08.sec06;
public class RemoteControlExample {
public static void main(String[] args) {
RemoteControl rc = new Television();
rc.turnOn();
rc.setVolume(5);
rc.setMute(true);
rc.setMute(false);
System.out.println();
rc = new Audio();
rc.turnOn();
rc.setVolume(5);
rc.setMute(true);
rc.setMute(false);
System.out.println();
RemoteControl.changeBattery(); // static 메서드 직접 호출
}
}
💻 실행 결과
TV를 켭니다.
현재 TV 볼륨 : 5
무음 처리합니다.
현재 TV 볼륨 : 0
무음 해제합니다.
Audio를 켭니다.
현재 Audio 볼륨 : 5
무음 처리합니다.
현재 Audio 볼륨 : 0
무음 해제합니다.
현재 Audio 볼륨 : 5
리모콘 건전지를 교환합니다.
💬 코드 설명
- RemoteControl.changeBattery();
→ 인터페이스명으로 직접 호출하는 정적 메서드 - 객체를 생성하지 않아도 사용할 수 있으며,
공통 도구 기능, 초기화 도우미, 상태 확인 등에 주로 사용
📌 간단 정리
요소 | 특징 |
default | 구현 클래스에서 오버라이딩 가능 |
static | 인터페이스 이름으로 직접 호출, 오버라이딩 불가 |
💡 포인트 정리
- static 메서드는 인스턴스 없이 인터페이스 이름으로 직접 호출
- 구현 클래스와 무관하게 고정된 유틸 기능을 제공할 수 있음
- default 메서드와 달리 상속(재정의)이 불가능
- 인터페이스를 도구 모음처럼 활용할 수 있는 구조를 제공
📌 정리하자면,
static 메서드는 인터페이스의 공통적인 기능을 제공하는 유틸리티 역할로,
구현 클래스에 영향을 주지 않고 독립적으로 호출 가능한 장점이 있습니다.