게으른 개발자의 끄적거림

Java 추상클래스 인터페이스 차이

끄적잉 2023. 9. 7. 23:49
반응형

Java에서 추상 클래스와 인터페이스는 둘 다 추상화를 구현하는 데 사용되지만, 그들 간에 몇 가지 중요한 차이점이 있습니다. 아래에서는 이러한 차이점을 자세하게 설명하겠습니다:

 

 

1 . 정의:

  • 추상 클래스 (Abstract Class):
    • 추상 클래스는 abstract 키워드를 사용하여 정의됩니다.
    • 일반 메서드와 추상 메서드 모두를 가질 수 있습니다.
    • 일반 메서드는 구현이 있어도 되고 없어도 됩니다.
    • 추상 메서드는 선언만 하고 실제 구현은 하위 클래스에서 제공해야 합니다.
    • 다른 클래스를 상속받을 수 있습니다.
  • 인터페이스 (Interface):
    • 인터페이스는 interface 키워드를 사용하여 정의됩니다.
    • 모든 메서드는 기본적으로 추상 메서드이며, abstract 키워드를 생략할 수 있습니다 (Java 8 이전에는 default 메서드를 허용하지 않았습니다).
    • 구현을 가질 수 없으며, 모든 메서드는 하위 클래스에서 구현되어야 합니다.
    • 다른 클래스와 다중 상속을 허용합니다.

 

 

 

 

2. 다중 상속:

  • 추상 클래스:
    • Java에서는 단일 상속만 허용됩니다. 따라서 추상 클래스는 다른 클래스를 상속받는 동시에 다른 인터페이스를 구현할 수 있습니다.
  • 인터페이스:
    • 인터페이스는 다중 상속을 지원합니다. 클래스가 여러 인터페이스를 구현할 수 있으므로 다양한 기능을 조합하여 사용할 수 있습니다.

 

 

 

 

 3. 목적:

  • 추상 클래스:
    • 공통된 기능을 가진 클래스들 간의 공통 기반 클래스를 정의하거나, 추상 메서드를 이용하여 하위 클래스에 구현을 강제하고 공통 로직을 제공합니다.
  • 인터페이스:
    • 다양한 클래스들이 특정 동작을 수행하도록 강제하기 위해 사용됩니다. 클래스들 간에 공유하는 메서드의 형식을 정의하고 다형성을 촉진합니다.

 

 

 

 4. 필드:

  • 추상 클래스:
    • 인스턴스 변수(필드)를 가질 수 있으며, 이러한 필드는 하위 클래스에서 공유됩니다.
  • 인터페이스:
    • Java 8 이전에는 인터페이스에서는 필드를 가질 수 없었습니다. Java 8에서는 static final 필드만 허용합니다.

 

 

 

 

 5. 상속과 구현:

  • 추상 클래스:
    • 클래스를 상속받을 때 extends 키워드를 사용합니다.
  • 인터페이스:
    • 클래스가 인터페이스를 구현할 때 implements 키워드를 사용합니다.

 

 

 

 

일반적으로, 추상 클래스는 공통된 구현을 가진 클래스들의 계층 구조를 만들고, 인터페이스는 클래스가 특정 동작을 수행하도록 정의하는 데 사용됩니다. 또한 다중 상속의 필요성과 관련된 경우, 인터페이스가 더 유용할 수 있습니다. 추상 클래스와 인터페이스는 Java 언어의 다형성과 객체 지향 프로그래밍 원칙을 구현하는 데 중요한 개념입니다.

반응형