EEALL@ONCE

☕ 추상클래스와 인터페이스의 차이는 뭘까? 본문

언어💻/자바☕

☕ 추상클래스와 인터페이스의 차이는 뭘까?

올엣원스 2023. 11. 27. 13:11
728x90


1. **구현 여부:**
   - 추상 클래스는 일부 메서드를 구현하고 일부를 추상 메서드로 남길 수 있습니다.
   - 인터페이스는 모든 메서드가 추상 메서드이며, 구현을 포함할 수 없습니다. Java 8부터는 디폴트 메서드와 정적 메서드를 통해 구현을 제공할 수 있게 되었습니다.

2. **다중 상속:**
   - 추상 클래스는 단일 상속만 허용됩니다. 즉, 하나의 추상 클래스만 상속할 수 있습니다.
   - 인터페이스는 다중 상속을 지원합니다. 클래스가 여러 인터페이스를 구현할 수 있습니다.

3. **접근 지정자:**
   - 추상 클래스의 메서드는 public, protected, default, private 등 다양한 접근 지정자를 가질 수 있습니다.
   - 인터페이스의 메서드는 기본적으로 public이며, Java 9부터 private 및 private static 메서드도 지원합니다.

4. **변수:**
   - 추상 클래스는 인스턴스 변수(필드)를 가질 수 있고, 각 변수의 접근 지정자를 조절할 수 있습니다.
   - 인터페이스는 기본적으로 상수(public static final)와 스태틱 메서드만 가질 수 있습니다.


간단하게 설명해보겠습니다.

**추상 클래스:**
- 추상 클래스는 마치 요리 레시피처럼 일부 단계가 정해져 있지만, 일부는 상상해서 만들어야합니다. 
- 예를 들면, 케이크 레시피 중에 "반죽 만들기"는 정해져 있어야 하지만 "토핑 넣기"는 네가 마음대로 넣을 수 있습니다.

**인터페이스:**
- 인터페이스는 규칙짓기처럼 생각해봅니다. 공부하는 규칙 중에는 "숙제하기"나 "책 읽기"가 있을 수 있습니다.
-  "숙제하기"와 "책 읽기"라는 규칙을 가지면서, 동시에 여러 규칙을 따를 수 있습니다.

**차이:**
- 추상 클래스는 일부 기본 단계가 정해져 있고, 일부는 알아서 구현해야합니다.  반면 인터페이스는 규칙들만 가지고 있습니다.
- 추상 클래스는 한 번에 하나만 상속받을 수 있습니다. 인터페이스는 많은 규칙을 한꺼번에 따를 수 있습니다.

728x90