인터페이스 vs 추상 클래스
인터페이스(Interface)
- 모든 메서드가 기본적으로 public abstract (Java 8, default, static 메서드 허용)
- 모든 변수는 public static final (상속)
- 클래스는 여러 인터페이스를 implements 가능
- 구현체가 없는 순수한 추상화 제공
- ”~ 할 수 있다” 의 능력을 나타냄
추상 클래스 (abstract class)
- 추상 메서드와 일반 메서드 모두 가질 수 있음
- 모든 접근 제어자 사용 가능
- 인스턴스 변수, 생성자 가질 수 있음
- 클래스는 하나의 추상클래스만 extends 가능
- ”~ 이다” 의 관계를 나타냄