인터페이스(Interface)와 추상 클래스(Abstract Class)는 모두 객체 지향 프로그래밍에서 추상화를 구현하는 데 사용되지만 몇 가지 중요한 차이점이 있습니다.
추상 클래스(Abstract Class):
- 일반 메서드와 추상 메서드를 모두 포함할 수 있습니다. 추상 클래스는 하나 이상의 추상 메서드(구현이 없는 메서드)를 가질 수 있습니다.
- 인스턴스화될 수 없습니다. 즉, 추상 클래스로는 객체를 직접적으로 생성할 수 없습니다.
- 추상 클래스는 상태(멤버 변수)와 구현을 포함할 수 있습니다. 즉, 필드와 메서드의 일반적인 구현을 포함할 수 있습니다.
- 단일 상속만을 지원하므로, 자바와 같은 언어에서는 하나의 추상 클래스만을 상속할 수 있습니다.
인터페이스(Interface):
- 추상 메서드만을 포함할 수 있습니다. Java 8 이후에는 default 메서드와 static 메서드의 구현을 포함할 수 있지만, 이는 Java에서 인터페이스의 기능이 확장되었다는 의미입니다.
- 다중 상속을 지원합니다. 하나의 클래스가 여러 개의 인터페이스를 구현할 수 있습니다.
- 인스턴스화될 수 없습니다. 인터페이스는 추상 클래스처럼 직접 객체를 생성할 수 없습니다.
- 상수(static final 변수)와 메서드의 선언만을 포함할 수 있습니다. 하위 클래스는 이러한 메서드를 구현해야 합니다.
주요 차이점:
- 다중 상속 vs 단일 상속: 인터페이스는 다중 상속을 지원하며, 추상 클래스는 단일 상속만을 지원합니다.
- 구현 포함 여부: 추상 클래스는 구현을 포함할 수 있지만, 인터페이스는 구현을 포함하지 않습니다.
'CS' 카테고리의 다른 글
| 유니티 렌더링 파이프라인 (1) | 2023.11.21 |
|---|---|
| 디자인 패턴을 사용하는 이유 (1) | 2023.11.20 |
| 오버로딩과 오버라이딩의 차이점 (0) | 2023.11.20 |
| 서로 다른 성능을 가진 기기에서 Update 사용 시 주의할 점 (0) | 2023.11.20 |
| 상속이란 (0) | 2023.11.16 |