Programming/Java

[Java] 인터페이스와 추상클래스 차이

쌍쌍바나나 2016. 6. 11. 13:47
반응형

인터페이스(Interface)와 추상클래스(Abstract)의 차이

우리 면접에서도 자주 등장하는 질문중에 하나가 인터페이스와 추상클래스의 차이가 무엇인가요? 라고 하면 음.. 나는 분명 interface와 abstract를 써보긴 했는데, 이 두개의 차이를 생각하지 않고 사용을 했습니다. 거의 대부분 interface의 키워드를 사용해서 구현을 했습니다. 그렇다면 인터페이스와 추상클래스의 차이가 무엇일까요?

우리는 학교다닐때나 책으로 접할때는 항상 외우기 시작합니다. 어떻게? 아래 처럼...

  • 추상클래스는 부분적으로 완성된 설계도, 인터페이스는 밑그림만 그려져 있는 기본 설계도
  • 추상클래스는 단일 상속만 가능(extends), 인터페이스는 다중 상속이 가능 (implements)
  • 추상클래스란 추상 메소드를 한개 이상 포함하고 있는 클래스  

인터페이스는 상수와 몸통이 없는 메소드로 구성되어 있고, 즉 추상메소드와 상수만으로 구성된 것이 인터페이스 입니다. 추가할 경우에는 인터페이스는 모든 것에 대한 수정이 필요합니다. 

그렇다면 왜 쓸까요?

1. 개발 시간을 단축 시킬 수 있습니다. 

동시에 다른 한 쪽에서는 인터페이스를 구현하는 클래스를 작성 하도록 하여 동시 개발이 가능합니다. 구현부와 선언부를 분리 시킬 수 있기 때문에 실제 구현에서 독립적인 프로그램을 작성하는것이 가능합니다. 

2. 표준화가 가능합니다. 

개발자들에게 인터페이스를 구현하여 프로그램을 일관되고 정형화된 프로그램의 개발이 가능합니다. 


반응형