인터페이스의 정적 메서드
Java 8 Version에서는 람다식과 Stream API의 추가와 함께 인터페이스의 기본 메서드(default method)와 정적 메서드(static method)를 제공하였습니다.
클래스의 정적 메서드와 마찬가지로 인터페이스에서도 정적 메서드를 만들 수 있습니다. 클래스에서 정적 메서드가 호출되는 것처럼 객체를 생성하지 않고 인터페이스의 정적 메서드를 호출할 수 있습니다.
예제 1. 정적 메서드 호출
다음 예제는 인터페이스의 정적 메서드를 구현 클래스 없이 호출합니다.
public interface MyInterface {
static void show() {
System.out.println("정적 메서드 호출");
}
static int getZero() {
return 0;
}
static String getHello() {
return "Hello";
}
}
public class Main {
public static void main(String args[]) {
MyInterface.show();
System.out.println(MyInterface.getZero());
System.out.println(MyInterface.getHello());
}
}
실행 결과
정적 메서드 호출
0
Hello
예제 2. 정적 메서드 범위
다음 예제는 인터페이스의 정적 메서드 범위를 보여줍니다. 구현 클래스에서 동일한 이름의 메서드가 구현되면 해당 메서드는 클래스의 정적 멤버가 됩니다.
public interface MyInterface {
static void show() {
System.out.println("인터페이스의 show() 메서드");
}
}
public class Main implements MyInterface {
// 동일한 이름의 메서드
static void show() {
System.out.println("클래스의 show() 메서드");
}
public static void main(String args[]) {
MyInterface.show(); // MyInterface의 정적 메서드
show(); // Main 클래스의 메서드
}
}
실행 결과
인터페이스의 show() 메서드
클래스의 show() 메서드
즉, 구현 클래스가 인터페이스의 정적 메서드를 재정의하는 것은 불가능합니다. 따라서 인터페이스의 정적 메서드를 보호합니다.
정리
- Java 8 Version부터 인터페이스에 정적 메서드를 만들 수 있습니다.
- 인터페이스의 정적 메서드는 null 검사, 컬렉션 정렬 등과 같은 유틸리티 메서드를 제공하기 위해 사용할 수 있습니다.
- 인터페이스의 정적 메서드는 재정의할 수 없습니다.
반응형
'Java' 카테고리의 다른 글
[Java]LocalDate 비교 방법(날짜 비교 방법) (0) | 2022.08.11 |
---|---|
[Java]폴더(디렉토리) 생성 방법 (0) | 2022.07.12 |
[Java]중첩 인터페이스 및 내부 인터페이스(Nested Interface and Inner Interface) (0) | 2022.06.27 |
[Java]오토박싱과 언박싱(Autoboxing and Unboxing) (0) | 2022.06.22 |
[Java]절대값 구하기 (0) | 2022.06.22 |
댓글