인터페이스
- 추상 메서드와 상수만을 포함한다.
- 상속받을 서브 클래스에게 구현할 메서드들의 원형을 모두 알려주어, 클래스가 자신의 목적에 맞게 메서드를 구현하도록 하는 것이다.
- 구현 객체의 같은 동작을 보장하기 위한 목적이 있다.
추상클래스
- 추상 메서드를 최소 한 개 이상 가지고 있다.
- 서브 클래스에서 슈퍼 클래스의 모든 추상 메서드를 오버라이딩하여 구현한다.
- 객체(인스턴스)를 생성하기 위함이 아니며, 상속을 위한 부모클래스로 활용하기 위한 것이다.
공통점
- 인스턴스를 생성할 수 없다.
- 선언만 있고 구현 내용이 없다. 자식 클래스가 추상 메서드의 구체적인 동작을 구현해야 한다.
차이점
- 추상클래스는 추상 메서드를 자식 클래스가 구체화하여 그 기능을 확장하는 데 목적이 있다.
인터페이스는 서로 관련이 없는 클래스에서 공통적으로 사용하는 방식이 필요하지만 기능을 각각 구현할 필요가 있는 경우에 사용한다.
- 추상클래스는 단일 상속 인터페이스는 다중 상속이 가능하다.