추상클래스
- 하나 이상의 추상 메서드(abstract method)를 가지는 클래스
- 추상 클래스를 상속 받은 자식 클래스는 반드시 추상 메서드를 구현해야 한다(overriding)
- 단일 상속만 가능하다
인터페이스
- 상수(static final)와 추상 메서드(abstract method)의 집합
- 추상 클래스와는 다르게 구현부가 있는 일반 메서드, 일반 멤버 변수를 가질 수 없다
- 다중 상속이 가능하다
공통점
- new 생성자를 사용할 수 없다(인스턴스화 할 수 없음)
- 해당 클래스를 상속받아 구현한 클래스의 인스턴스를 사용해야 한다.
- 추상 메소드를 가지고 있음
추상클래스 다형성과 인터페이스 다형성
추상클래스, 인터페이스에 대해 공부하다가 많은 블로그에서 인터페이스를 설명할 때, 다형성과 관련이 있다고 하는 글을 보고 추상클래스를 상속받는 클래스의 따라서 추상메서드의 구현체가 달라질 수 있는데 추상클래스는 다형성과 관련이 없을까? 라는 의문이 들었다.
- 추상클래스 다형성
- 추상클래스를 통한 다형성은 부모 추상 클래스와 논리적인 관련이 있는 확장된 자식 클래스들을 다룬다는 점에서, 관계적으로 묶여 있다고 볼 수 있다
- 인터페이스 다형성
- 상속에 구애 받지 않은 구현이 가능함으로써 자유로운 다형성을 이용할 수 있다
[참고자료]
인퍼페이스, 추상클래스 차이