2017년 2월 18일 토요일

interface vs abstract class

인터페이스와 추상클래스의 차이점을 묻는 면접 문제를 접하게 되었다. 그리고 정말 처참히 몰랐다. 그래서 대충 얼버무리고 나오고 구글에서 검색을 해보니 대충 얼버무린 말이 너무 초라해졌다. 그래서 잠깐 정리...

우선 링크를 걸어놓겠다.

Interface
  • 상태(data members), 구현(methods)을 가질 수 없다.
  • 구현하는 클래스는 반드시 함수를 정의해 주어야 한다.
  • 다중 상속이 가능하다.
  • 클래스의 명세(specification)만 제공
Abstract Class
  • 상태, 구현을 가질 수 있다.
  • 다중 상속이 불가능 하다.
  • 클래스의 구체적인 modelling을 제공, 즉 구체적인 구현이 가능하다.

그니까 Interface는 상관 없는 클래스들에게 공통적인 능력(ability)를 부여하는 것이고.
Abstract Class는 연관 관계가 있는 클래스들에게 공통적인 뼈대를 제공하는 것이라고 보면 된다.

Interface와 상태, 구현이 없는 Abstract Class의 차이점

interface는 여전히 다중 상속이 가능하지만 Abstract Class는 다중 상속이 불가능 하다는 점. 그리고 Abstract Class는 반드시 abstract인 함수를 override해야한다는 점.

댓글 없음:

댓글 쓰기