Java
[Java] 추상 클래스와 인터페이스 비교
Dev_Green
2023. 8. 2. 11:03
1. 추상 클래스(abstract class)
- 클래스를 설계도에 비유한다면, 추상클래스는 미완성 설계도
- 클래스가 미완성이라는 것은 멤버의 개수에 관계된 것이 아니라, 단지 미완성 메서드(추상 메서드)를 포함하고 있다는 의미
- 선언부만 작성하고 구현부는 작성하지 않은 채로 남겨 둔 것
- 추상 클래스는 추상 메서드를 포함하고 있다는 것을 제외하고는 일반클래스와 유사하다
- 추상 클래스에도 생성자가 있으며 멤버변수와 메서드도 가질 수 있다
- new 연산자 사용 불가
1. 1. 추상 클래스의 사용 방법
- 클래스 선언부에 abstract 키워드 입력
- abstract 키워드를 포함한 추상 메서드를 정의한다.
- 추상 클래스는 상속을 통해서 자손 클래스에 의해서 완성
2. 인터페이스(interface)
- 추상클래스가 미완성 설계도 라면, 구현된 것은 아무것도 없고 밑그림만 그려져 있는 기본 설계도
- 추상 클래스와 달리
일반 메서드또는멤버변수를 멤버로 가질 수 없다 - 오직 추상 메서드와 상수만을 멤버로 가질 수 있다
- 모든 멤버변수는 public static final
- 모든 메서드는 public abstract
- 단, static 메서드와 default 메서드는 예외 *java 1.8 부터 가능
2.1. 인터페이스의 필요성
- A-B 의 직접적인 관계
- A-I-B 간접적인 관계
-
- 클래스 A를 작성하는데 있어서 클래스 B가 사용되지 않는다
- A-B 의 직접적인 관계에서 A-I-B 간접적인 관계로 변환
- 인터페이스를 통한 간접적인 클래스 사용으로 손쉬운 모듈 교체 지원
- 구현의 강제로 표준화 처리(abstract)
- 서로 관계 없는 클래스들에게 인터페이스 구현을 통한 관계 부여