대충 차이점은 알고있는데 상태를 가질 수 있다는 점을 제외하면 인터페이스도 default method나 static method를 가질 수 있잖아.


그리고 인터페이스는 다중 상속이 가능하기 때문에 타입 계층을 정의할 때도 유연하게 사용할 수 있고.


그렇다면 대부분의 계층 설계를 추상 클래스로 할 필요 없이 인터페이스로 하고 구현체에서 구현하면 될 것 같은데 추상 클래스를 사용해야만 하는 경우가 있다면 언제라고 생각하십니까?