Interface
- 일반적으로 변수, 함수, 클래스에 타입 체크를 위해 사용
- 직접 인스턴스를 생성 불가, 포함하는 모든 메소드가 추상 메소드
- 추상 클래스의 추상 메소드와 달리 abstract 키워드 사용 불가
interface를 사용하는 이유
- 타입의 이름을 짓고 코드 안의 계약을 정의
- 프로젝트 외부에서 사용하는 코드의 계약을 정의하는 강력한 방법
- 아래와 같은 범주에 대한 계약을 정의
- 객체의 스펙(속성과 속성의 타입)
- 함수의 파라미터
- 함수의 스펙(파라미터, 반환 타입 등)
- 배열과 객체에 접근하는 방식
- 클래스
interface가 없는 코드(왼쪽) ↔ interface를 사용한 코드(오른쪽)
⇒ Interface를 추가하여 함수 매개변수 프로퍼티 정의 가능.
정의한 프로퍼티 값을 누락하거나 정의하지 않은 값을 인수로 전달 시 컴파일 에러 발생.
Abstract class
- 추상 속성 혹은 메소드를 가질 수 있는 클래스
- 자신의 속성이나 메서드를 상속하는 다른 클래스에서 구현
- 추상 클래스로는 객체 인스턴스를 생성 불가, 상속용으로만 가능
추상 클래스를 사용하는 이유
- 공통적인 동작을 정의하기 위해
- 부모 클래스를 상속 받아 기능을 확장할 때
- 복제본으로 상속하게 만들고 싶을 때
구현 가능한 메소드
객체 생성
생성자
다중 상속
타입 호환성
💥 추상 클래스는 프로그램의 전체 구조를 잡기 위해 사용하고, 인터페이스는 기본적인 설계도로써 개발 협업에서 사용하기 용이
출처 - [엘리스 강의 자료]