Java8 이하의 버전에서 Interface 는 추상메서드만 멤버로 가질 수 있었다.
Java8 이후 부터는 Interface 에 default 키워드를 통해 추상메서드가 아닌
구현된 메서드인 Default Method를 가질 수 있다.
즉, 메서드에 내용을 추가할 수 있다.
아래는 일반적인 Interface 및 추상메서드이다.
Animal Interface
public interface Animal {
void tiger(int a);
}
위처럼 기본적인 Interface 형식은 추상메서드만 존재했지만 Java8 에서 default 키워드를 통해
메서드안에 내용을 추가할 수 있다.
public interface Animal {
void tiger(int a);
default Integer cat(int a) {
System.out.println("나는 고양이");
return a * 2;
}
}
위 내용과 같이 default 키워드를 사용해 Default Method 를 생성했으며, 내용도 추가할 수 있다.
일반적인 Interface 를 모든 추상메서드를 Override 해야하지만 default 키워드를 통해
생성한 Default Method는 구현했기 때문에 Override 하지 않아도 컴파일 에러가 나지 않는다.
아래는 Animal Interface 를 구현한 Human 클래스이다.
위와 같이 Interface를 구현했지만 Override 를 하지 않아 Human 클래스에서 에러가 난다.
에러 내용을 확인해보니 Animal Interface 의 tiger 메서드를 Override 하지 않아 나는 에러이다.
Add unimplemented methods 를 통해 구현하지 않은 메서드를 구현해보면 아래와 같다.
일반 추상메서드인 tiger만 구현하고 Default Method 인 cat 메서드는 구현하지 않아도
컴파일 에러가 나지 않는다.