1. 공통점과 차이점 비교
공통점
- 인스턴스화 할 수 없다.
- 상세구현없이 메소드를 정의한다.
차이점
- Interface의 경우 public만 가능하다.
- Interface의 경우 동시에 여러개 사용이 가능하지만, Abstract Class의 경우 하나만 사용가능하다.
2. 적용되는 유형
Abstract Class
- 연관되는 클래스들이 공통되는 코드를 포함하고 있을 때
- public외의 접근자 사용이 필요할 때
Interfaces
- 연관성없는 클래스들이 각기 구현이 필요할 경우
- 상세구현내용에 대해서는 몰라도 될때
3. 정리
- Interface의 경우 제공되는 기능을 중심으로 정리되는 듯 하다.
ex) JDBCOperation, ItemOperation
- Abstract의 경우 추상화를 통한 공통변수, 메소드 정리에 사용된다.
ex) Graphic Object (Line, Circle, Rectangle)
- Interface와 Abstract 동시사용이 가능하다. 일반적으로 팩토리 패턴에서 많이 사용된다.
인터페이스의 경우 원격호출을 통해서 사용할 때 상대에게 방식을 알려주는 용도로 많이 사용된다.
따라서 한번 정의되면 변경이 쉽지 않기 때문에 처음 정의시 고민이 필요하다.
Abstract의 경우 기본구현을 통해서 뼈대를 만들고 각 상세메소드는 상속클래스에서 정의하는 방식을 많이 사용한다.
이 때 상위클래스의 빈 메소드는 Abstract Method로 정의해주는 것이 혼란을 피할 수 있다.
'Java' 카테고리의 다른 글
Oracle 11g JDBC Driver에서 Hang이 발생하는 경우 (0) | 2017.02.20 |
---|---|
FTP connection reset에 관련된 오류해결 (0) | 2016.04.05 |
Spring 과 Java의 ThreadPool 구현차이 (0) | 2015.06.30 |
volatile키워드와 동기화, Atomic 타입 (0) | 2014.11.07 |
immutable object (0) | 2014.11.06 |