인터페이스에 기본 메소드를 정의할 수 있나요?

인터페이스에 기본 메소드를 정의할 수 있나요? 전통적으로 자바(Java)에서 인터페이스는 구현할 메소드의 시그니처(메소드 이름, 리턴 타입, 매개변수)만을 선언하고, 실제 구현 내용은 해당 인터페이스를 구현하는 클래스에서 작성하도록 되어 있었습니다.

즉, 인터페이스 내부에는 몸체가 없는 추상 메소드만 선언할 수 있었죠. 하지만 자바 8 버전부터는 인터페이스에 기본 메소드(default method) 를 정의할 수 있는 기능이 추가되었습니다.

기본 메소드란? 기본 메소드란 인터페이스 내부에 `default` 키워드를 이용하여 선언하며, 메소드 구현(몸체)을 포함할 수 있는 메소드입니다.

이를 통해 인터페이스에 새로운 기능을 추가하더라도 기존에 해당 인터페이스를 구현한 클래스들을 반드시 수정하지 않아도 되는 유연성을 제공합니다.

기본 메소드의 특징 - 구현 포함 가능 : 메소드 선언과 함께 구체적인 구현을 포함할 수 있습니다.

- 인터페이스 내에 선언 : `default` 키워드를 사용하여 인터페이스 안에 작성합니다.

- 다중 상속 해결 : 여러 인터페이스에 동일한 기본 메소드가 있는 경우, 클래스에서 직접 구현하여 충돌을 해결해야 합니다.

- 호환성 유지 : 기존 인터페이스에 새로운 메소드를 추가할 때도 기존 구현 클래스에 영향을 주지 않아 하위 호환성을 유지하는 데 유용합니다.

예시 ```java public interface MyInterface { void existingMethod(); default void newDefaultMethod() { System.out.println("This is a default method in the interface"); } } public class MyClass implements MyInterface { @Override public void existingMethod() { System.out.println("Implementation of existing method"); } } public class Main { public static void main(String[] args) { MyClass obj = new MyClass(); obj.existingMethod(); // 기존 메소드 호출 obj.newDefaultMethod(); // 기본 메소드 호출 } } ``` 정리 - 네, 자바 8 이상에서는 인터페이스에 기본 메소드를 정의할 수 있습니다.

- `default` 키워드를 사용하여 메소드의 기본 구현을 인터페이스에 포함시킬 수 있습니다.

- 이를 통해 기존 구현 클래스에 영향을 주지 않고 인터페이스를 확장하는 것이 가능해졌습니다.

이 외에도 자바 8에서는 정적 메소드(static method)도 인터페이스 내에 선언할 수 있도록 지원되고 있습니다.

따라서 인터페이스의 역할과 활용도가 더욱 넓어졌습니다.


관련 게시글

자바에서 병렬 처리를 구현하는 방법은 무엇인가요?

자바에서 병렬 처리는 여러 작업을 동시에 실행하여 프로그램의 성능과 응답성을 향상시키는 기법입니다....

문제 해결 및 면접 질문

문제 해결 및 면접 질문에 관한 글 --- 1. 문제 해결의 중요성 문제 해결 능력은 개인과...

자바에서 중복된 요소를 제거하는 방법은 무엇인가요?

자바(Java)에서 중복된 요소를 제거하는 방법에는 여러 가지가 있습니다. 주로 컬렉션프레임워크를 활용하...

자바 Collections에서 정렬하는 방법은 무엇인가요?

자바 Collections에서 정렬하는 방법에 대해 설명드리겠습니다. 자바에서는 컬렉션(Collection) 자료구조의...

자바의 메모리 누수 문제를 해결하는 방법은 무엇인가요?

자바의 메모리 누수 문제를 해결하는 방법 --- 1. 메모리 누수란? 자바는 가비지 컬렉션(GC)...

팩토리 패턴을 사용하여 주어진 문제를 해결해보세요.

팩토리 패턴을 사용하여 주어진 문제를 해결해보세요. --- 1. 팩토리 패턴이란? 팩토리 패턴...