충분히 쌓여가는
8.6 정적 메소드 본문
인터페이스에는 정적 메소드도 선언이 가능하다
추상 메소드와 디폴트 메소드는 구현 객체가 필요하지만, 정적 메소드는 구현 객체가 없어도 인터페이스만으로도 호출할 수 있다
선언 방법은 클래스 정적 메소드와 동일하지만, public을 생략하더라도 자동으로 컴파일 과정에서 붙는 것이 차이점이다
public|private static 리턴타입 메소드명(매개변수, ...) {...}
예제
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("리모컨 건전지 교체");
}
}
인터페이스에서 선언된 정적 메소드는 구현 객체 없이 인터페이스명으로 접근해서 호출할 수 있다
RemoteControl의 chagneBattery() 메소드는 RemoteControl.changeBattery()로 호출할 수 있다
정적 메소드의 실행부(중괄호 {})를 작성할 때 주의할 점
상수 필드를 제외한 추상 메소드, 디폴트 메소드, private 메소드 등을 호출할 수 없다는 것 -> 이 메소드는 구현 객체가 필요한 인스턴스 메소드이기 때문이다
'이것이 자바다 > 08 인터페이스' 카테고리의 다른 글
8.8 다중 인터페이스 구현 (0) | 2024.04.03 |
---|---|
8.7 private 메소드 - private 메소드, private 정적 메소드 (0) | 2024.04.03 |
8.5 디폴트 메소드 (0) | 2024.04.03 |
8.4 추상 메소드 - public abstract (0) | 2024.04.03 |
8.3 상수 필드 - public static final (0) | 2024.04.03 |