기본 메서드란?
Java 8에서 추가된 기능으로 인터페이스에 새로운 메서드를 추가하기 위한 방법이다. 이전의 Java 버전에서는 인터페이스에 메서드를 선언하면 해당 인터페이스를 구현하는 모든 클래스에서 해당 메서드를 구현해야 했지만, 기본 메서드를 사용하면 인터페이스에 기본 구현을 제공할 수 있으며, 구현 클래스에서 해당 메서드를 오버라이드하지 않아도 된다.
1. default 메서드 구문
public interface MyInterface {
// 추상 메서드
void abstractMethod();
// default 메서드
default void defaultMethod() {
// 구현 코드
}
}
- default 키워드를 사용하여 메서드를 선언
- 중괄호 내부에 메서드의 구현 코드를 작성
- default 메서드는 기본적으로 public으로 선언되며, 필요에 따라 접근 제어자를 변경할 수도 있다.
2. 사용 방법
2-1) Interface 생성
public interface MyInterface {
// 추상 메서드
void abstractMethod();
// 기본 메서드
default void defaultMethod() {
// 기본 구현 코드
System.out.println("This is a default method.");
}
}
2-2) Interface 구현
public class MyClass implements MyInterface {
@Override
public void abstractMethod() {
// 추상 메서드 구현 코드
System.out.println("Abstract method implementation.");
}
public static void main(String[] args) {
MyClass obj = new MyClass();
obj.abstractMethod(); // 출력 : Abstract method implementation.
obj.defaultMethod(); // 출력 : This is a default method.
}
}
- 추상 메서드는 오버라이드하여 구현한다.
- 기본 메서드는 이미 구현되어 있기 때문에 호출하여 사용할 수 있다.
3. 활용
- 인터페이스의 기능 확장(유연성, 확장성)
기존 인터페이스를 수정하지 않고도 새로운 기능을 추가할 필요가 있는 경우에 기본 메서드를 사용 - 라이브러리와 호환성 유지
Java 8 이후의 라이브러리들은 기본 메서드를 활용하여 인터페이스를 설계하고 있다. 라이브러리의 개발자는 새로운 기능을 추가하거나 수정하면서도, 기존 사용자 코드와의 호환성을 유지할 수 있다. - 인터페이스의 다중 상속
여러 인터페이스에서 동일한 기본 메서드를 가질 수 있으며, 이를 구현하는 클래스에서 필요에 따라 해당 메서드를 오버라이드하여 자체 구현을 제공할 수 있다. (다중 상속의 이점을 활용하면서도 충돌을 해결) - 인터페이스의 선택적 구현
모든 메서드를 구현해야 하는 것이 아니라 필요한 메서드만 구현할 수 있다. 사용자에게 구현 부담을 줄이고, 필요한 기능만 구현하는 유연성을 제공
반응형
'Java' 카테고리의 다른 글
[Java] 날짜 및 시간 API (Date and Time API) 사용 방법 (0) | 2023.05.30 |
---|---|
[Java] 함수형 인터페이스 종류 및 사용 방법 (0) | 2023.05.26 |
[Java] 메서드 참조 사용 방법 (1) | 2023.05.24 |
[Java] 스트림(Stream) API 사용 방법 (0) | 2023.05.23 |
[Java] 람다 표현식 사용 방법 (0) | 2023.05.22 |