본문 바로가기
백엔드/Java

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

by david100gom 2020. 5. 5.

추상클래스

  • 관련성이 높은 클래스 간에 코드를 공유하고 싶은 경우

  • 추상클래스를 상속받은 클래스들이 공통으로 가지는 메소드와 필드가 많거나, public 이외의 접근제어자(protected, private) 사용이 필요한 경우

  • non-static, non-final 필드 선언이 필요한 경우. 즉, 각 인스턴스에서 state 변경을 위한 메소드를 선언할 수 있다.

인터페이스

  • 서로 관련성이 없는 클래스들이 인터페이스를 구현하게 되는 경우에 사용한다. 예를 들어, Comparable, Cloneable 인터페이스는 여러 클래스들에서 구현되는데, 구현클래스들 간에 관련성이 없는 경우가 대부분이다.

  • 특정 데이터 타입의 행동을 명시하고 싶은데, 어디서 그 행동이 구현되는지는 신경쓰지 않는 경우.

  • 다중상속을 허용하고 싶은 경우

Java 8 부터 인터페이스도 default 키워드를 사용해 메소드 구현부를 가질 수 있게 되었다.

참고 : https://yaboong.github.io/java/2018/09/25/interface-vs-abstract-in-java8/

댓글