1. 인터페이스와 추상클래스
자바8 이후로 인터페이스에 default method를 구현할 수 있게 되면서 추상클래스와의 차이가 모호해진 부분이 있다.
따라서 인터페이스와 추상클래스를 사용하는 상황을 각각 정리해보려고 한다.
추상클래스
- 관련성이 높은 클래스 간에 코드를 공유하고 싶은 경우
- 추상클래스를 상속받은 클래스들이 공통으로 가지는 메소드와 필드가 많거나, public 이외의 접근제어자(protected, private) 사용이 필요한 경우
- non-static, non-final 필드 선언이 필요한 경우. 즉, 각 인스턴스에서 state 변경을 위한 메소드를 선언할 수 있다.
인터페이스
- 서로 관련성이 없는 클래스들이 인터페이스를 구현하게 되는 경우에 사용한다. 예를 들어, Comparable, Cloneable 인터페이스는 여러 클래스들에서 구현되는데, 구현클래스들 간에 관련성이 없는 경우가 대부분이다.
- 특정 데이터 타입의 행동을 명시하고 싶은데, 어디서 그 행동이 구현되는지는 신경쓰지 않는 경우.
- 다중상속을 허용하고 싶은 경우
'Develop > JAVA' 카테고리의 다른 글
자바 객체 직렬화(Serialize), 역직렬화(Deserialize)란? (0) | 2021.12.31 |
---|---|
자바 제네릭에 대한 간단한 설명 (Generic, Generic Type Erasure) (0) | 2021.11.24 |
자바 reflection에 대하여 (0) | 2021.11.21 |
JAVA GC (Garbage Collector) 동작원리 설명 (0) | 2021.11.10 |
[JAVA] 자바 파일(.java)이 컴파일 되는 과정에 대한 설명 (0) | 2021.11.04 |