01. 클래스
- 클래스는 객체를 만들기 위한 틀
- 속성은 객체의 성질을 정함
- 생성자
- 클래스 접근 제한자
02. 상속
- 상속을 통해 기존 클래스의 속성과 메서드를 물려받아 새로운 클래스를 정의할 수 있다.
- extends 키워드를 사용
- super 키워드는 자식 클래스가 부모 클래스를 참조하는 데 사용하는 키워드!
- 서브타입, 슈퍼타입
- upcasting, downcasting
03. 추상 클래스
- 인스턴스화 할 수 없는 클래스
- 상속을 통해 자식 클래스에서 메서드를 제각각 구현하도록 강제하는 용도
- abstract 키워드를 사용하여 정의
- 1개 이상의 추상 함수가 있는 것이 일반적
04. 인터페이스
- 객체가 가져야 하는 속성과 메서드를 정의
- 추상 클래스와 인터페이스의 차이
추상 클래스 | 인터페이스 | |
구현부 제공 여부 | 클래스의 기본 구현 제공 | 객체의 구조만 정의 |
상속 메커니즘 | 단일 상속만 지원 | 다중 상속을 지원 |
구현 메커니즘 | 반드시 추상 함수를 구현해야 함 | 인터페이스에 정의된 모든 메서드를 전부 구현해야 함 |
- 기본 구현을 제공하고 상속을 통해 확장하는데 초점을 맞추고 싶다면 -> 추상 클래스
- 객체가 완벽하게 특정 구조를 준수하도록 강제하고 싶다면 -> 인터페이스
05. 객체 지향 설계 원칙 - S.O.L.I.D
- S(SRP. 단일 책임 원칙) -> ⭐️ 매우 중요 ⭐️
- 클래스는 하나의 책임만 가져야 한다. - O(OCP. 개방 폐쇄 원칙
- 기존 코드를 변경하지 않고도 기능을 확장할 수 있어야 한다. - L(LSP.리스코프 치환 원칙)
- 서브타입은 기반이 되는 슈퍼타입을 대체할 수 있어야 한다. - I(ISP. 인터페이스 분리 원칙)
- 해당 클래스에게 무의미한 메소드의 구현을 막자. - D(DIP. 의존성 역전 원칙)
- 하위 수준 모듈(구현 클래스)보다 상위 수준 모듈(인터페이스)에 의존을 해야 한다.
'Coding > 내일배움캠프' 카테고리의 다른 글
[내일배움캠프] DTO(Data Transfer Object) | Node.js 4기 | Day 61 | 24.03.05.(화) (0) | 2024.03.05 |
---|---|
[내일배움캠프] NestJS 1주차, 2주차 | Node.js 4기 | Day 60 | 24.03.04.(월) (0) | 2024.03.04 |
[내일배움캠프] TypeScript 3주차, 4주차 | Node.js 4기 | Day 58 | 24.03.02.(토) (0) | 2024.03.02 |
[내일배움캠프] TypeScript 1주차, 2주차 | Node.js 4기 | Day 57 | 24.03.01.(금) (0) | 2024.03.01 |
[내일배움캠프] 내배민 KPT 작성 | Node.js 4기 | 24.02.29.(목) (0) | 2024.02.29 |