Light Blue Pointer
본문 바로가기
Developing/TIL(Develop)

추상클래스와 인터페이스 정의와 차이점

by Greedy 2024. 5. 24.

추상클래스(Abstract Class)와 인터페이스(Interface)는 모두 클래스 간의 공통적인 동작을 정의하는 방법을 제공한다

추상클래스 (Abstract Class)

하나 이상의 추상 메서드를 포함하는 클래스

일반 메서드도 포함할 수 있다

필드를 가질 수 있다

생성자를 가질 수 있다

상속을 통해 클래스의 공통적인 동작을 정의할 때 사용한다

추상 메서드

선언되어있지만 구현은 되어있지 않은 메서드

추상클래스 자체는 인스턴스화할 수 없으며, 추상클래스를 상속받는 하위 클래스에서 추상 메서드를 구현해야 한다

인터페이스 (Interface)

인터페이스는 메서드의 선언만을 포함하며, 구현은 제공하지 않는 추상 타입

모든 메서드는 기본적으로 추상 메서드

디폴트 메서드(default methods)와 static 메서드를 포함할 수 있다

메서드 선언만 포함하며, 구현을 포함하지 않는다

Java 8부터는 예외적으로 디폴트 메서드와 static 메서드는 구현을 포함할 수 있다

필드를 가질 수 없으며, 상수(constant)만 가질 수 있다

다중 상속이 가능하다

한 클래스가 여러 인터페이스를 구현할 수 있다

클래스의 기능을 명세(specification)하는데 사용한다

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

목적

추상클래스 공통적인 동작을 상속받아 재사용하려는 경우

인터페이스 클래스의 기능을 명세하고, 다형성을 제공하려는 경우

상속과 구현

추상클래스 단일 상속만 가능 (다른 클래스 상속 불가)

인터페이스 다중 구현이 가능 (여러 인터페이스를 구현할 수 있음)

구성 요소

추상클래스 일반 메서드, 추상 메서드, 필드, 생성자 포함 가능

인터페이스 추상 메서드(기본), 디폴트 메서드, static 메서드, 상수 포함 가능

인스턴스화

추상클래스 인스턴스화 불가능

인터페이스 인스턴스화 불가능

 

이러한 개념을 잘 활용하면 객체 지향 설계에서 유연성과 재사용성을 높일 수 있다

'Developing > TIL(Develop)' 카테고리의 다른 글

Java가 다중 상속을 지원하지 않는 이유  (0) 2024.05.24
Collection Framework  (0) 2024.05.24
Object Oriented Programming  (0) 2024.05.24
오버라이딩과 오버로딩 차이  (0) 2024.05.23
JVM(Java Virtual Machine)  (0) 2024.05.17