[Java] 추상화 클래스와 인터페이스 간의 관계

Abstract class VS Interface

Posted by owin2828 on 2020-01-06 17:03 · 1 min read
  • 본 문서에서는 추상화 클래스와 인터페이스의 공통점 및 차이에 대해 알아보도록 한다.
  • 출처: https://bit.ly/2ZwNFGa

1. 공통점

  • abstract class(추상 클래스)와 interface(인터페이스) 는 선언만 있고 구현 내용이 없는 클래스
  • 자기 자신이 new를 해서 객체를 생성할 수 없으며,
    추상클래스를 extends 받거나, interface를 implements 한 자식만이 객체를 생성 가능
  • 상속 받은 자식이 구현을 반드시 하도록 해야할 때 사용
  • 선언된 type과 자식의 type이 같아야

2. 차이점

  1. 추상화 클래스:
    • 추상클래스의 정의는 abstract 메서드가 하나라도 존재하는 클래스를 일컫음
      (일부 구현된 매서드 + 구현 안된 추상화 매서드)
    • 추상클래스를 상속받는 클래스는 반드시 추상 매서드를 구현해야 함
    • extends를 통해 부모 클래스를 상속
  2. 인터페이스:
    • 인터페이스는 구현체 없이, 매서드에 대한 명세만 존재
    • 인터페이스를 상속받는 클래스에서는 반드시 인터페이스에 있는 메소드를 모두 구현해야 함
    • implements를 통해 여러 개의 인터페이스를 구현
    • 추상클래스는 단일상속이지만 interface는 다중 상속이 가능(extends + implements)