EEALL@ONCE
☕ 추상클래스와 인터페이스의 차이는 뭘까? 본문
1. **구현 여부:**
- 추상 클래스는 일부 메서드를 구현하고 일부를 추상 메서드로 남길 수 있습니다.
- 인터페이스는 모든 메서드가 추상 메서드이며, 구현을 포함할 수 없습니다. Java 8부터는 디폴트 메서드와 정적 메서드를 통해 구현을 제공할 수 있게 되었습니다.
2. **다중 상속:**
- 추상 클래스는 단일 상속만 허용됩니다. 즉, 하나의 추상 클래스만 상속할 수 있습니다.
- 인터페이스는 다중 상속을 지원합니다. 클래스가 여러 인터페이스를 구현할 수 있습니다.
3. **접근 지정자:**
- 추상 클래스의 메서드는 public, protected, default, private 등 다양한 접근 지정자를 가질 수 있습니다.
- 인터페이스의 메서드는 기본적으로 public이며, Java 9부터 private 및 private static 메서드도 지원합니다.
4. **변수:**
- 추상 클래스는 인스턴스 변수(필드)를 가질 수 있고, 각 변수의 접근 지정자를 조절할 수 있습니다.
- 인터페이스는 기본적으로 상수(public static final)와 스태틱 메서드만 가질 수 있습니다.
간단하게 설명해보겠습니다.
**추상 클래스:**
- 추상 클래스는 마치 요리 레시피처럼 일부 단계가 정해져 있지만, 일부는 상상해서 만들어야합니다.
- 예를 들면, 케이크 레시피 중에 "반죽 만들기"는 정해져 있어야 하지만 "토핑 넣기"는 네가 마음대로 넣을 수 있습니다.
**인터페이스:**
- 인터페이스는 규칙짓기처럼 생각해봅니다. 공부하는 규칙 중에는 "숙제하기"나 "책 읽기"가 있을 수 있습니다.
- "숙제하기"와 "책 읽기"라는 규칙을 가지면서, 동시에 여러 규칙을 따를 수 있습니다.
**차이:**
- 추상 클래스는 일부 기본 단계가 정해져 있고, 일부는 알아서 구현해야합니다. 반면 인터페이스는 규칙들만 가지고 있습니다.
- 추상 클래스는 한 번에 하나만 상속받을 수 있습니다. 인터페이스는 많은 규칙을 한꺼번에 따를 수 있습니다.
'언어💻 > 자바☕' 카테고리의 다른 글
☕Java 스트림과 Collectors의 groupingBy 및 reducing 메서드 (1) | 2023.11.29 |
---|---|
☕Collectors : 유틸리티 클래스 (java stream api) 컬렉션 연산 수행자 (0) | 2023.11.29 |
☕ FUNCTIONAL INTERFACE : @FunctionalInterface (0) | 2023.11.20 |
☕ final 클래스 / 메소드 / 필드 (0) | 2023.11.14 |
☕ 생성자 (0) | 2023.10.27 |