인터페이스 기본메소드

default 키워드 이용해 선언한 메소드를 의미한다.

사용 이유

인터페이스의 존재하는 모든 추상메소드를 구현하지 않으면 implements한 클래스들은 컴파일 에러가 나게된다.
컴파일 에러가 나지 않게 하기 위해서는 default 키워드를 통해 구현체 메소드를 정의하면 된다.

사용시 주의점

구현체에서 제어하는 메소드가 아니기 때문에 런타임 에러가 발생할 수 있다.
@implSpec 으로 반드시 문서화를 해야한다.

기본메소드는 오버라이드가 가능하다. 단 Object의 메소드들은 오버라이드 불가하다.
추상메소드로 Object 메소드들을 선언할 수 있으나, 추상메소드라기보다는 일종의 제약사항이다.

diamond problem(다중상속 문제)
인터페이스 상속시 구현체 메소드를 다시 추상화메소드로 만들수 있다.
인터페이스를 여러개 구현할때 충돌하는 메소드가 있을 경우 구현하는 클래스에서 재정의해야한다.

기본 메소드 사용 예제는 이곳 에서 확인할 수 있다.