interface vs abstract class

2025. 9. 26. 12:51·개발 공부/Java-Spring

 최근 자바를 복기하는 데 인터페이스 와 추상클래스 둘다  추상화하는 데 차이점에대해서 복기 하고자 정리해봤습니다.

 

🔹 1. 공통점

  • 둘 다 추상 메서드(구현이 없는 메서드)를 가질 수 있음.
  • 직접 인스턴스화(new) 할 수 없음.
  • 다형성(polymorphism)을 지원함 → 부모 타입(인터페이스/추상클래스)으로 자식 객체 참조 가능.

🔹 2. 차이점

                      Interface                                                                                                       Abstract Class

 

상속/구현 클래스가 여러 인터페이스 다중 구현 가능 (implements) 클래스는 단일 상속만 가능 (extends)
메서드 기본적으로 public abstract (Java 8 이후: default, static 메서드도 가능, Java 9 이후: private 메서드도 가능) abstract 메서드와 일반 메서드(구현된 메서드) 모두 가능
필드 public static final 상수만 가능 인스턴스 변수, static 변수, 상수 모두 가능
생성자 가질 수 없음 생성자 가질 수 있음 (직접 객체 생성은 못하지만, 하위 클래스에서 super() 호출 가능)
다형성 활용 기능의 계약(Contract) 제공 (무엇을 할 수 있는지 명세) 공통된 기본 기능 + 추상 기능 제공 (템플릿 제공)
사용 의도 “이 클래스가 반드시 이 기능들을 구현해야 한다”를 보장 → 규칙, 표준화 “이 클래스들은 공통된 특성이 있고 일부 기본 동작도 공유한다” → 상속 기반 확장

 

 

 

 

interface Animal {
    void sound(); // 추상 메서드
}

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

class Cat implements Animal {
    public void sound() {
        System.out.println("야옹");
    }
}

 

 

abstract class Animal {
    String name;

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

    abstract void sound(); // 추상 메서드

    void eat() { // 일반 메서드
        System.out.println(name + " is eating");
    }
}

class Dog extends Animal {
    Dog(String name) {
        super(name);
    }

    void sound() {
        System.out.println("멍멍");
    }
}

'개발 공부 > Java-Spring' 카테고리의 다른 글

객체의 종류  (0) 2025.11.20
자바 예약어 final vs static  (0) 2025.10.23
정적팩토리 메서드  (0) 2025.08.15
JVM 의 메모리 구조  (0) 2025.08.15
자바 용어 와 자바 실행 방법  (0) 2025.07.28
'개발 공부/Java-Spring' 카테고리의 다른 글
  • 객체의 종류
  • 자바 예약어 final vs static
  • 정적팩토리 메서드
  • JVM 의 메모리 구조
cookiboii
cookiboii
초보 개발자입니다.
  • cookiboii
    Just Do it
    cookiboii
  • 전체
    오늘
    어제
    • 분류 전체보기 (79)
      • 잡소리 (2)
      • vscode꾸미기 (1)
      • 회사공부 (0)
      • 면접복기 (5)
      • 개발취직관련 좋은 글귀 (12)
      • 개발 공부 (58)
        • 백준 (0)
        • web (3)
        • js&ts&react (4)
        • Java-Spring (18)
        • 개발책 리뷰 (0)
        • c++ (0)
        • git (0)
        • code up 문제 (5)
        • 네트워크 (5)
        • 자료구조&알고리즘 (2)
        • ci,cd (1)
        • 프로젝트 (9)
        • sql (4)
        • 컴퓨터구조 (1)
        • 운영체제 (5)
        • python (0)
  • 블로그 메뉴

    • 홈
    • 태그
  • 링크

    • 네이버블로그
    • 깃허브
  • 공지사항

  • 인기 글

  • 태그

    사이드프로젝트 #토이프로젝트 #개발 #개발자
    롤 #리그오브레전드
    코드업 #코딩문제
    springai #spring #java
    js #제이쿼리 #비동기통신 #코딩 #프로그래밍
    js #예약어 #자바스크랩트
    포켓몬 #vscode #vscode꾸미기 #개발
    프로그래밍
    ci #개발 #git
    코딩
    JVM
    Java
    개발
    자바 #Java #JPA #개발자 #개발 #초보
    자바
    js #web
    라이엇 #api #롤api
    깃허브 #깃 #커밋
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
cookiboii
interface vs abstract class
상단으로

티스토리툴바