abstract vs interface

현서·2025년 6월 3일
1

자바

목록 보기
14/32
post-thumbnail

🤔 abstract vs interface

공통점

  • 둘 다 직접 객체를 생성할 수 없음 (new 불가)

  • 자식 클래스에서 상속(구현) 해야 함

  • 다형성(Polymorphism)을 위해 사용됨

차이점

항목abstract class (추상 클래스)interface (인터페이스)
상속클래스는 단일 상속만 가능여러 개의 인터페이스 동시 구현 가능
목적공통 기능 + 일부 추상화기능만 정의 (100% 추상화)
구현 가능 여부일부 메서드 구현 가능(Java 8부터) default 메서드로 일부 구현 가능, 하지만 보통은 전부 미구현
필드(변수)인스턴스 변수, 생성자 가능상수 (public static final)만 가능
생성자O (생성자 정의 가능)X (생성자 없음)
접근 제어자메서드, 필드에 접근제어자 사용 가능메서드는 기본적으로 public abstract
상속 키워드extendsimplements

✅ 예제

abstract class 예시

abstract class Animal {
    void breathe() {
        System.out.println("숨을 쉰다");
    }
    abstract void sound();  // 추상 메서드
}

class Dog extends Animal {
    void sound() {
        System.out.println("멍멍");
    }
}

interface 예시

interface Flyable {
    void fly();  // public abstract 생략됨
}

class Bird implements Flyable {
    public void fly() {
        System.out.println("날아간다");
    }
}
  • abstract class: 상속받는 클래스끼리 공통된 코드나 필드가 있을 때 사용
    (ex. 동물의 공통 기능)

  • interface: 서로 관련 없는 클래스들이 동일한 기능을 수행해야 할 때 사용
    (ex. 자동차도, 새도 fly 할 수 있음)

profile
The light shines in the darkness.

0개의 댓글