추상클래스(abstract)
- 클래스를 설계도에 비유한다면 추상 클래스는 미완성 설계도에 비유할 수 있다
- 선언부만 작성하고 구현부는 작성하지 않은 채로 남겨 둔 것
- abstract 지시자로 정의되며 추상메소드가 하나 이상 포함
- abstract로 선언한 메소드는 자식 클래스에서 오버라이딩하여 반드시 구현해야 한다.
- Example
인터페이스(interface)
- interface 지시자로 정의하며 모든 메소드가 추상메소드로 정의
- 일반 메서드 또는 멤버 변수를 구성원으로 가질 수 없으며, 모든 멤버 변수는 public static final이다.
- 인터페이스는 인터페이스로부터만 상속받을 수 있으며, 클래스와 달리 다중상속을 받는 것이 가능하다.
추상클래스 vs 인터페이스
- 공통점 : 추상 메서드를 강제로 구현, 인스턴스화 불가능
- 차이점
- 다중 상속 여부 : 인터페이스를 구현하는 클래스는 다른 여러개 인터페이스를 함께 구현할 수 있다. 하지만 자바에서는 여러 추상클래스를 상속할 수 없다.
- 사용의도 : 추상 클래스는 상속 관계를 타고 올라갔을 때 같은 부모 클래스를 상속하며 부모 클래스가 가진 기능들을 구현해야할 경우 사용하며, 인터페이스는 상속 관계를 타고 올라갔을 때 다른 조상 클래스를 상속하더라도, 같은 기능이 필요할 경우 사용한다.