해당 게시물은 [제대로 파는 자바 (Java) - by 얄코]를 수강한 내용을 바탕으로 작성하였습니다.
추상 클래스와의 차이
🔴 : 추상 클래스 / 🔷 : 인터페이스
- 🔴 포유류
- 북극곰 - 🔷 사냥, 🔷 수영
- 날다람쥐 - 🔷 비행
- 🔴 파충류
- 거북 - 🔷 수영
- 날도마뱀 - 🔷 사냥, 🔷 수영, 🔷 비행
- 🔴 조류
- 독수리 - 🔷 사냥, 🔷 비행
- 펭귄 - 🔷 사냥, 🔷 수영
|
추상 클래스 |
인터페이스 |
기본 개념 |
물려 받는 것 (혈통/가문/계열) |
장착하는 것 (학위/자격증) |
다중 적용 |
불가 (모회사는 하나 뿐) |
가능 (학위는 여럿 딸 수 있음) |
상속관계에 의한 제한 |
있음 |
없음 |
생성자 |
가짐 |
가지지 않음 |
메소드 |
구상, 추상 모두 가능 |
추상 메소드 (abstract 안 붙여도 됨), default 구상 메소드, 클래스 메소드 |
필드 |
모두 가능 |
상수만 가능 (final 명시 불필요) |
적용 연산자 |
extends |
implements |
추상클래스
인터페이스
- 인터페이스는 다수 적용할 수 있음 확인
- 필드는 public static final
- 명시할 필요 없음
- 초기화 필수 (생성자가 없으므로)
- 메소드는 public abstract
- 명시할 필요 없음
- 메소드는 적용 클래스에서 구현 필수
- 인터페이스 적용 클래스 작성시 IDE 안내 이용
- 나머지 동물들 (날다람쥐, 거북, 펭귄) 들도 구현해보기
Main
⭐ 다음 섹션의 익명 클래스 강에서 유용한 활용예 배울 것
자바8에 추가된 기능들
💡 default 로 구상 메소드를 넣을 수 있도록 한 이유
- 사용되던 인터페이스에 새로운 기능을 추가해야 한다면?
- 새로운 자바 버전의 라이브러리 인터페이스에 새 기능이 추가되어야 한다면?
- 이를 적용하여 사용하던 클래스가 매우 많을 경우…
- 해당 인터페이스의 하위 클래스들을 일일이 수정하지 않아도 되도록