인터페이스 vs 추상 클래스

인터페이스(Interface)

  • 모든 메서드가 기본적으로 public abstract (Java 8, default, static 메서드 허용)
  • 모든 변수는 public static final (상속)
  • 클래스는 여러 인터페이스를 implements 가능
  • 구현체가 없는 순수한 추상화 제공
  • ”~ 할 수 있다” 의 능력을 나타냄

추상 클래스 (abstract class)

  • 추상 메서드와 일반 메서드 모두 가질 수 있음
  • 모든 접근 제어자 사용 가능
  • 인스턴스 변수, 생성자 가질 수 있음
  • 클래스는 하나의 추상클래스만 extends 가능
  • ”~ 이다” 의 관계를 나타냄