2026-04-04

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

1. 추상 클래스

공통된 상태와 일부 구현을 함께 가질 수 있는 클래스

즉, “공통 기능은 미리 구현해두고, 일부만 자식이 구현하게 하고 싶을 때” 사용한다.

특징

  • abstract 키워드 사용
  • 추상 메서드 + 일반 메서드 둘 다 가능
  • 필드(멤버 변수) 가질 수 있음
  • 생성자 가질 수 있음
  • 상속은 extends
  • 단일 상속만 가능

예시

abstract class Animal {
    String name;

    Animal(String name) {
        this.name = name;
    }

    void eat() {
        System.out.println("먹는다");
    }

    abstract void sound();
}

2. 인터페이스

구현 객체들이 따라야 하는 규약, 기능 명세

즉, “무엇을 할 수 있는가”를 정의하는 데 가깝다.

특징

  • interface 키워드 사용
  • 메서드의 규약 정의 중심
  • 다중 구현 가능
  • 구현은 implements
  • 클래스 간 공통 기능보다 역할 분리에 적합
  • 다형성 활용에 매우 유리

예시

interface Payment {
    void pay();
}
class CardPayment implements Payment {
    @Override
    public void pay() {
        System.out.println("카드 결제");
    }
}

핵심 차이

구분 추상 클래스 인터페이스
목적 공통 기능 + 공통 상태 제공 기능 규약 정의
필드 가능 상수만 가능
일반 메서드 가능 가능(기본/정적 메서드)
생성자 가능 불가
상속/구현 extends implements
다중 상속 불가 다중 구현 가능
  • 이름수정

results matching ""

    No results matching ""