본문 바로가기

JAVA

추상클래스와 인터페이스 차이

이건 좋은 질문이지만 개발자들 사이에서 의견이 분분한 난제이기도 한 질문이죠!
답변자의 취향 혹은 개발철학이 많이 들어갈 수 밖에 없는 문제라 생각하는데요,

저는 

어떤 공통된 기능과 형태가 필요한 아키텍쳐
(BMW, 현대, 혼다, 등 4륜자동차)
라면 Abstract class 를 사용할 것 같고

어떤 공통된 기능만이 요구되는 아키텍쳐
(엔진이 장착된 모든 기계 - 4륜자동차, 자전거, 오토바이, 선박, 트럭, 기타등등...)
라면 Interface를 사용할 것 같습니다.


인터페이스와 추상클래스의 가장 큰 차이를 알고 계시다면 이해가 쉬울겁니다.
세부 구현사항이 하부 아키텍쳐에까지 적용 가능한 부분에는 추상 클래스가,
그렇지 못한 경우는 보통 인터페이스가 맞는 용도이고요

이로 인해 추상 클래스의 사용범위는 대개 패키지 내,
인터페이스의 사용 범위는 패키지 외 (및 API) 로 넘어가게 됩니다.


중요한 것은 사용 범위가 넓어지면 넓어질 수록
한번 내 손을 떠난 인터페이스 혹은 추상클래스는 수정이 어려워지니 이 부분에 대한 고민도 필요하고요.



중급 개발자로 도약하려는 좋은 질문인데요,
이 부분에 대한 심도있는 고민이 필요하시다면 Joshua Bloch 라는 사람이 쓴 책인 'Effective Java' 를 꼭 읽어보시라고 말씀드리고 싶네요.

출처 : http://kin.naver.com/qna/detail.nhn?d1id=1&dirId=1040201&docId=126186650&qb=7LaU7IOB7YG0656Y7IqkIOyduO2EsO2OmOydtOyKpA==&enc=utf8&section=kin&rank=1&search_sort=0&spq=0&pid=gj6f8woi5URssckDghGsss--376946&sid=TaKS825wok0AAHblE@o
 
보충 설명 : http://blog.daum.net/coolprogramming/71 ( 추상클래스와 인터페이스의 차이를 알기 쉽게 설명해 놓았다)
 

'JAVA' 카테고리의 다른 글

인터페이스 정의(추상클래스)  (0) 2011.04.11
힙과 스택의 개념  (0) 2011.04.05