어제 추상 클래스와 추상 메서드를 정리하면서 인터페이스와 추상 클래스의 차이점이 궁금해졌습니다
Java에서 인터페이스와 추상 클래스는 둘 다 추상화를 통한 객체 지향 프로그래밍의 핵심 개념입니다
그러나 이 둘은 목적과 특징에서 차이가 있습니다
이 글에서는 Java에서 인터페이스와 추상 클래스의 주요 차이점에 대해 알아보겠습니다
1. 인터페이스 (Interface)
인터페이스는 Java에서 다중 상속을 지원하고, 클래스 간의 계약(Contract)을 정의하는데 주로 사용됩니다
다음은 인터페이스의 주요 특징입니다
- 추상 메서드(Abstract Method): 모든 메서드가 추상 메서드로 선언되어 있습니다. 구현은 하위 클래스에서 이루어집니다
- 다중 상속: 여러 인터페이스를 구현할 수 있습니다
- 상수(Constant): 인터페이스에서는 상수를 정의할 수 있습니다. 이는 자동으로 `public static final`로 설정됩니다.
- 인터페이스 간 상속: 인터페이스는 다른 인터페이스를 확장할 수 있습니다
2. 추상 클래스 (Abstrct Class)
추상 클래스는 클래스이면서 일부 메서드가 구현되지 않고 추상 메서드로 남겨진 클래스입니다
다음은 추상 클래스의 주요 특징입니다
- 일반 메서드와 추상 메서드 혼합: 추상 클래스는 일반 메서드와 추상 메서드를 함께 포함할 수 있습니다
- 단일 상속: Java에서는 단일 상속만을 지원하므로, 추상 클래스도 이 조건을 따릅니다
- 인터페이스 구현 가능: 추상 클래스는 인터페이스를 구현할 수 있습니다
3. 사용 상황
인터페이스
다중 상속이 필요하건, 계약을 명확하게 정의해야 할 때 사용합니다
예를 들어 여러 클래스에서 공통적으로 구현해야 하는 메서드가 있을 때 유용합니다
추상 클래스
공통된 메서드 구현이 필요하며, 또한 상속을 통해 확장하고자 할 때 사용합니다
추상 클래스는 하위 클래스에게 일부 구현을 강제하고 나머지는 선택적으로 제공할 수 있습니다
'-- Language -- > Java' 카테고리의 다른 글
[JAVA] 접근제어자 이해하기 (0) | 2023.12.18 |
---|---|
[JAVA] Java Doc 주석 (0) | 2023.12.15 |
[JAVA] 추상 클래스와 추상 메서드의 이해와 활용 (1) | 2023.12.08 |
[JAVA] for each 문 (0) | 2023.11.24 |
[JAVA] new 키워드 및 메모리 동작 (0) | 2023.11.23 |