1. 추상클래스란?
추상 메서드를 선언하여 상속을 통해서 자손 클래스에게 완성하도록 유도하는 클래스이다. 미완성 설계도라고 표현을 하며, 상속을 위한 클래스이기 때문에 객체를 생성할 수 없다.
class 앞에 abstract 예약어를 사용하여 상속을 통해서 구현해야한다.
2. 인터페이스란?
인터페이스는 기본 설계도라고 할 수 있다. 다른 클래스를 작성하는데 도움을 주는 목적이고 추상클래스와 다르게 다중상속(구현)이 가능하다.
3. 공통점, 차이점
3.1공통점
- 추상메서드를 사용할 수 있다.
3.2 차이점
1) 사용의도
- 추상클래스는 IS - A "~이다"
- 인터페이스는 HAS - A "~을 할 수 있는"
다중상속의 가능 여부에 따라 용도 구분
2) 공통된 기능 사용 여부
모든 클래스를 인터페이스를 사용해서 기본 틀을 구성한다면, 공통으로 필요한 기능들도 모든 클래스에서 오버라이딩 하여 재정의해야 한다. 이렇게 공통된 기능이 필요하다면 추상클래스를 이용해서 일반 메서드를 작성하여 자식 클래스에서 사용할 수 있도록 하면 된다.
4. 정리
추상클래스 사용시기 : 상속 관계를 쭉 타고 올라갔을 때 같은 조상클래스를 상속하는데 기능까지 완벽히 똑같은 기능이 필요한 경우
인터페이스 사용시기 : 상속 관계를 쭉 타고 올라갔을 때 다른 조상클래스를 상속하는데 같은 기능이 필요할 경우
참조
'Java > 기초' 카테고리의 다른 글
[Java] 애너테이션(Annotation) (0) | 2021.08.08 |
---|---|
[Java] 지네릭스(Generics) (0) | 2021.08.08 |
[Java] BigInteger, BigDecimal 클래스 (0) | 2020.11.15 |
[Java] StringTokenizer 클래스 (0) | 2020.11.15 |
[Java] 래퍼(Wrapper) 클래스, 정규식(Regular Expression) (0) | 2020.11.15 |