현업에서 소스코드 작성 시 클래스를 처음부터 구현하게 된다면 코드의 가독성도 떨어지고 시간도 오래걸릴 것입니다. 또한 팀별로 각각 다른 모듈을 만들 시 팀마다 방법이 다르기 때문에 서로 호환성이 없고 일관성이 떨어지게 됩니다.
인터페이스를 통해 기본적으로 구현해야 할 메소드에 대한 규격들을 알려준다면 훨씬 효율적일 것입니다.
참조 https://math-coding.tistory.com/169
interface 인터페이스명 {
// 상수
타입 상수명 = 값;
// 추상 메소드
타입 메소드명(매개변수, ...);
// 디폴트 메소드
default 타입 메소드명(매개변수, ...) {...}
// 정적 메소드
static 타입 메소드명(매개변수) {...}
}
인터페이스에서 디폴트 메소드를 허용한 이유는 기존 인터페이스를 확장해서 새로운 기능을 추가하기 위해서 입니다. 기존 인터페이스의 이름과 추상 메소드를 변경 없이 디폴트 메소드만 추가할 수 있기 때문에 이전에 개발한 구현 클래스를 그대로 사용할 수 있으면서 새로 개발하는 클래스는 디폴트 메소드를 활용할 수 있다는 장점이 있습니다.
디폴트 메소드를 단순히 상속 받음
디폴트 메소드를 재정의(Override)해서 실행 내용 변경
디폴트 메소드를 추상 메소드로 재선언