프로그래밍/JAVA

[JAVA] 추상 클래스와 인터페이스 비교

노력의천재 2019. 7. 1. 23:29

추상 클래스와 인터페이스가 유사한 점은 다음과 같다.

  • 객체를 생성할 수 없고, 상속을 위한 슈퍼 클래스로만 사용
  • 클래스의 다형성을 실현하기 위한 목적

표를 통해 차이점을 알아보면

비교 목적 구성
추상 클래스
  • 서브 클래스에서 필요로 하는 대부분의 기능을 구현하여 두고 상속받아 활용할 수 있도록 함
  • 서브 클래스에서 구현할 수 밖에 없는 기능만을 추상 메소드로 선언하여 서브 클래스에서 구현하도록 하는 목적
  • 추상 메소드와 일반 메소드 모두 포함
  • 상수, 변수 필드 모두 포함
인터페이스
  • 객체의 기능을 모두 공개한 표준화 문서
  • 인터페이스를 상속받는 클래스의 목적에 따라 인터페이스의 모든 추상 메소드를 만들도록 하는 목적
  • 변수 필드(멤버 변수)는 포함 X
  • 상수, 추상 메소드, 일반 메소드, default 메소드, static 메소드 모두 포함
  • protected 접근 지정 선언 불가
  • 다중 상속 지원

 

추상 클래스는 키워드 그대로 확장, 상속을 의미함으로써, 물려주는 개념이 된다. 그렇기에 부모-자식 관계인 계층 구조를 나타내며 상속을 강제화한다.

하지만 인터페이스는 상속 개념이 아닌, 동일한 동작을 위한 구현을 강제화 한다.