추상클래스
-
관련성이 높은 클래스 간에 코드를 공유하고 싶은 경우
-
추상클래스를 상속받은 클래스들이 공통으로 가지는 메소드와 필드가 많거나, 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/
'백엔드 > Java' 카테고리의 다른 글
자바 리팩토링 1탄 (0) | 2020.09.20 |
---|---|
자바 멤버변수 (0) | 2020.07.12 |
클래스 다이어그램 (0) | 2020.07.11 |
OAuth2 승인 방식의 종류 (0) | 2020.05.23 |
멀티스레드 환경에서의 Thread-safe 테스트 (0) | 2020.02.16 |
Jedis Pool 최적화 - JedisPool - redis connection pool (레디스 커넥션 풀) (0) | 2020.02.02 |
StringBuffer vs StringBuilder (0) | 2020.01.27 |
int vs Integer (0) | 2020.01.27 |
댓글