자바8에서는 메소드 구현을 포함하는 인터페이스를 정의할 수 있다.
default method
인터페이스의 기본 구현을 제공한다.
기존 인터페이스를 구현한 클래스는 자동을 인터페이스에 추가된 디폴트 메소드를 상속 받게 된다.
default 메서드가 나온 이유
- 인터페이스에 새로운 메서드(추상 메서드)를 추가하기 어려움 (인터페이스 : 추상 메서드 집합)
- 인터페이스의 변경의 전파를 최소화할 수 있다.
interface Repairable{
boolean isfinished(); // 추상 메서드
}
interface Repairable{
default boolean isfinished(){}; // Default 메서드(추상 메서드 X), 구현도 가능함
}
디폴트 메서드를 이용하면 인터페이스의 기본 구현을 그대로 상속하므로 인터페이스에 자유롭게 새로운 메서드를 추가할 수 있게된다.
인터페이스에 새로운 메소드를 추가하려면 인터페이스를 구현하는 기존의 모든 클래스에 새로운 메소드를 추가, 구현해야 한다. 기존 클래스를 관리할 수 있는 상황이면 쉽게 해결 가능하지만, 인터페이스가 오픈되어 대중에 공개되었을 때는 애매한 상황이 놓여진다.
'Programming > Java' 카테고리의 다른 글
Collection (0) | 2022.02.11 |
---|---|
원시(Primitive) 타입과 참조(Reference) 타입 (0) | 2022.02.11 |
JAVA 25(3) 어노테이션 (0) | 2021.09.17 |
JAVA 22(2) 제네릭 2 (0) | 2021.08.14 |
JAVA 22(1) 제네릭 2 (0) | 2021.08.14 |