원래 인터페이스는 메소드 정의만 할 수 있고 구현은 할 수 없지만,
java8부터 인터페이스에 디폴트 메소드(Default methods) 를 붙일 수 있게 되었다
따라서 구현 내용도 인터페이스에 포함시킬 수 있다
아래는 사용예시이다
(해보니까 interface에서 default method 사용 시 오버라이딩도 가능하다)
+추가로 List<> 도 인터페이스이고 그 안에 보면 default 메소드를 사용한 부분을 볼 수 있다
public interface Fruit {
public String getTaste();
default boolean isEatSkin(){
return false;
}
}
public class AppleDto implements Fruit {
@Override
public String getTaste() {
return "새콤달콤";
}
}
public class TomatoDto implements Fruit {
@Override
public String getTaste() {
return "감칠맛";
}
@Override
public boolean isEatSkin() {
return true;
}
}
public class MainClass {
public static void main(String[] args) {
AppleDto apple = new AppleDto();
TomatoDto tomato = new TomatoDto();
System.out.println(apple.getTaste() + " , " + apple.isEatSkin());
System.out.println(tomato.getTaste() + " , " + tomato.isEatSkin());
}
}
새콤달콤 , false
감칠맛 , true