Java 인터페이스(Interface) VS 추상 클래스(Abstract)

2SEONGA·2025년 1월 17일
0

Java

목록 보기
3/13
post-thumbnail

ASAC 7기 동기들과 인터페이스와 추상클래스에 대해 대화를 나눈 후
둘의 차이점을 쉽게 이해하고 싶은 분들을 위해 글을 작성하게 되었습니다!

인터페이스(Interface) VS 추상 클래스(Abstract)

구분인터페이스 (Interface)추상 클래스 (Abstract Class)
주요 목적특정 "기능" 구현 강제클래스 간의 공통된 속성 및 동작을 정의하고 상속 제공
상속 관계클래스와 느슨한 관계 (구조적 연관성 X)클래스 간 강한 상속 관계를 형성
다중 상속여러 인터페이스를 구현 가능단일 상속만 가능
메서드 구현 여부모든 메서드는 기본적으로 추상 메서드 (abstract 생략 가능)추상 메서드와 일반 메서드 모두 포함 가능
필드 사용public static final(상수)만 선언 가능인스턴스 변수, 상수 모두 사용 가능
접근 제어자모든 필드와 메서드는 암묵적으로 publicprivate, protected, public 등 다양한 접근 제어자 가능
생성자생성자 정의 불가능생성자 정의 가능
추가 기능클래스에 여러 기능을 조합할 때 유용공통된 기본 구현을 제공하여 코드 재사용 가능
예제interface Flyable { void fly(); }abstract class Animal { abstract void makeSound(); }

그래서 차이점을 한 마디로 이야기하면?

  • 인터페이스는
    기능 구현 강제를 필요할 때
  • 추상 클래스는
    공통된 속성 및 동작 부여로 클래스 간 구조적 관계 형성이 필요할 때

참고용 : 쉬운 이해를 위한 비유

책을 펼쳤는데..

  • 책 내용에 대한 챕터 : 인터페이스
  • 챕터를 관통하는 책의 공통된 주제 : 추상 클래스

자 너가 오늘 해야할 과제야! = 인터페이스

근데 이 조건을 공통적으로 적용시켜야해! = 추상 클래스

profile
(와.. 정말 Chill하다..)

0개의 댓글