어제 추상 클래스와 추상 메서드를 정리하면서 인터페이스와 추상 클래스의 차이점이 궁금해졌습니다

Java에서 인터페이스와 추상 클래스는 둘 다 추상화를 통한 객체 지향 프로그래밍의 핵심 개념입니다

그러나 이 둘은 목적과 특징에서 차이가 있습니다

이 글에서는 Java에서 인터페이스와 추상 클래스의 주요 차이점에 대해 알아보겠습니다

 

1. 인터페이스 (Interface)

인터페이스는 Java에서 다중 상속을 지원하고, 클래스 간의 계약(Contract)을 정의하는데 주로 사용됩니다

다음은 인터페이스의 주요 특징입니다

 

  • 추상 메서드(Abstract Method): 모든 메서드가 추상 메서드로 선언되어 있습니다. 구현은 하위 클래스에서 이루어집니다
  • 다중 상속: 여러 인터페이스를 구현할 수 있습니다
  • 상수(Constant): 인터페이스에서는 상수를 정의할 수 있습니다. 이는 자동으로 `public static final`로 설정됩니다.
  • 인터페이스 간 상속: 인터페이스는 다른 인터페이스를 확장할 수 있습니다

 

2. 추상 클래스 (Abstrct Class)

추상 클래스는 클래스이면서 일부 메서드가 구현되지 않고 추상 메서드로 남겨진 클래스입니다

다음은 추상 클래스의 주요 특징입니다

 

  • 일반 메서드와 추상 메서드 혼합: 추상 클래스는 일반 메서드와 추상 메서드를 함께 포함할 수 있습니다
  • 단일 상속: Java에서는 단일 상속만을 지원하므로, 추상 클래스도 이 조건을 따릅니다
  • 인터페이스 구현 가능: 추상 클래스는 인터페이스를 구현할 수 있습니다

 

3. 사용 상황

인터페이스

다중 상속이 필요하건, 계약을 명확하게 정의해야 할 때 사용합니다

예를 들어 여러 클래스에서 공통적으로 구현해야 하는 메서드가 있을 때 유용합니다

 

추상 클래스

공통된 메서드 구현이 필요하며, 또한 상속을 통해 확장하고자 할 때 사용합니다

추상 클래스는 하위 클래스에게 일부 구현을 강제하고 나머지는 선택적으로 제공할 수 있습니다

 

 

+ Recent posts