일단 추상클래스나 인터페이스나 두 개의 공통점은 다른 클래스를 작성하는데 도움을 주는 목적으로 작성되었다.
자바의 특성상 한개의 클래스만 상속이 가능하다. 클래스의 구분은 추상클래스 상속을 통해 클래스들이 공통으로 가지는 메서드와 필드가 많아 중복 멤버 통합으로 해결하고, 할 수 있는 기능들을 인터페이스로 구현한다.
모든 클래스가 인터페이스만 사용해서 기본 틀을 구성한다? 그렇다면 공통으로 필요한 기능들도 모든 클래스에서 오버라이딩 하여 재정의를 해야하는데 이건 너무 번거로울거다.
이렇게 공통된 기능이 필요하다면 추상클래스를 이용해서 일반 메서드를 작성하여 자식 클래스에서 사용할 수 있도록 하면 된다. 자바는 하나의 클래스만 상속이 가능하다. 만약 각각 다른 추상클래스를 상속하는데 공통된 기능이 필요하다면? 해당 기능을 인터페이스로 작성해서 구현하는게 편하다.
상위 클래스에 선언 된 추상메서드는 더 아래로 상속할 클래스에게 위임도 가능하다. 상속을 위한 클래스니까!
추상클래스는 상속 관계를 타고 올라갔을때 같은 부모 클래스를 상속하며 부모 클래스가 가진 기능들을 똑같이 필요로 하는 경우 사용
인터페이스는 상속 관계를 타고 올라갔을때 다른 부모 클래스를 상속하는데 같은 기능이 필요할 경우 사용
정보에 감사드립니다.