용어/java
[국비][JAVA] 인터페이스와 추상(abstract) 차이
줌인.
2024. 6. 2. 00:32
구분 | 추상 클래스 (Abstract Class) | 추상 메서드 (Abstract Method) |
인터페이스 (Interface)
|
정의 | 추상 메서드를 하나 이상 포함하거나 abstract로 선언된 클래스 |
구현부 없이 선언만 있는 메서드 |
추상 메서드와 상수만으로
구성된 형태 |
목적 | 관련 있는 클래스들의 공통적인 특징을 추출하고 상속을 통해 재사용성 증가 |
하위 클래스에서 반드시 구현해야 할 메서드 명세 정의 |
관련 없는 클래스들이 특정
기능을 공유하도록 함 |
관계 | IS-A 관계 (상속 관계) | IS-A 관계 (상속 관계) |
HAS-A 관계 (구현 관계)
|
구현 | 추상 메서드는 하위 클래스에서 반드시 구현해야 함 | 하위 클래스에서 반드시 구현해야 함 |
인터페이스를 구현하는 클래스에서 추상 메서드 구현해야 함
|
메서드 종류 | - 추상 메서드 - 일반 메서드 - 생성자 |
추상 메서드 |
추상 메서드
(Java 8 이후 default, static 메서드 가능) |
멤버 변수 |
- 일반 변수 - 상수 |
없음 |
상수 (public static final)
|
상속/ 구현 |
단일 상속만 가능 | 해당 없음 | 다중 구현 가능 |
활용 예시 |
- 동물 (추상 클래스), 움직이다 (추상 메서드) - 개, 고양이 (하위 클래스) |
동물 클래스의 움직이다 (추상 메서드) |
Comparable, Runnable
(인터페이스) |
장점 | - 공통 기능을 추상 클래스에서 구현하여 코드 중복 방지 - 하위 클래스 간의 일관성 유지 |
하위 클래스에서 반드시 구현하도록 강제하여 설계 유연성 확보 |
- 다중 상속의 단점 보완
- 유연하고 확장 가능한 설계 |
단점 | 단일 상속 제한 | 추상 클래스를 통해서만 사용 가능 |
모든 메서드를 추상 메서드로
선언해야 함 (Java 8 이전) |
728x90