기본 메소드 (Default Methods) 인터페이스에 메소드 선언이 아니라 구현체를 제공하는 방법 해당 인터페이스를 구현한 클래스를 깨트리지 않고 새 기능을 추가할 수 있다. 기본 메소드는 구현체가 모르게 추가된 기능으로 그만큼 리스크가 있다. 컴파일 에러는 아니지만 구현체에 따라 런타임 에러가 발생할 수 있다. 반드시 문서화 할 것. (@implSpec 자바독 태그 사용) public interface Foo { void printName(); /* * @implSpec * 이 구현체는 getName()으로 가져온 문자열을 대문자로 바꿔 출력한다. */ // getName() 에 null 값이 들어올 수 있음. 문제가 된다면 구현 클래스에서 재정의하자. default void printNameUpp..