Java 8부터 도입된 새로운 기능이 있어서 적어봅니다.
바로 default와 static 메서드인데요. 그동안 인터페이스에 함수를 정의하려면 abstract class를 만들었어야 했는데 인터페이스에 함수 구현이라니.. 뭔가 너무 틀을 깬거 같긴하지만 정리해봅니다.
1. 추상 메서드 (Abstract Method)
- default, static 키워드가 없는 일반적인 인터페이스 메서드.
- 반드시 구현 클래스에서 오버라이딩해야 함.
- 예제:
interface MyInterface {
void abstractMethod();
}
2. 디폴트 메서드 (Default Method)
- default 키워드를 사용하여 인터페이스에서 직접 구현할 수 있는 메서드.
- 구현 클래스에서 오버라이딩할 수 있음.
- 주로 기존 인터페이스에 기능을 추가할 때 사용됨.
예제
interface MyInterface {
default void defaultMethod() {
System.out.println("This is a default method");
}
}
class MyClass implements MyInterface {
// defaultMethod()를 오버라이딩하지 않으면 인터페이스의 구현이 사용됨.
}
public class Main {
public static void main(String[] args) {
MyClass obj = new MyClass();
obj.defaultMethod(); // "This is a default method"
}
}
3. 정적 메서드 (Static Method)
- static 키워드를 사용하여 정의.
- 인스턴스가 아니라 인터페이스 이름을 통해 직접 호출.
- 구현 클래스에서 오버라이딩할 수 없음.
예제
interface MyInterface {
static void staticMethod() {
System.out.println("This is a static method");
}
}
public class Main {
public static void main(String[] args) {
MyInterface.staticMethod(); // "This is a static method"
}
}
4. 정리
유형 | 키워드 | 구현 여부 | 오버라이딩 가능 여부 | 호출 방법 |
추상 메서드 | 없음 | 구현해야 함 | O | 인스턴스를 통해 호출 |
디폴트 메서드 | default | 선택적으로 구현 가능 | O | 인스턴스를 통해 호출 |
정적 메서드 | static | 인터페이스에서 직접 구현 | X | 인터페이스명을 통해 호출 |
'프로그래밍 > Java' 카테고리의 다른 글
빌더 (Builder) 클래스란? (2) | 2025.03.02 |
---|---|
IntStream.rangeClosed (1) | 2025.03.02 |
@Autowired 없어도 주입하는 방법 (0) | 2025.03.02 |