[JavaScript] 클래스
[JavaScript] 클래스
자바스크립트 클래스
클래스란?
class는 객체를 생성하기 위한 템플릿을 정의 가능- 코드의 재사용성, 유지보수성을 높임
- 객체 지향 프로그래밍의 주요 개념을 활용 가능
- 캡슐화, 상속, 다형성 등..
클래스 기본 문법
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class 클래스명 {
// 생성자 메서드
constructor(매개변수) {
// 초기화 코드
}
// 메서드 정의
메서드명() {
// 메서드 코드
}
}
// 인스턴스 생성
const 인스턴스명 = new 클래스명("매개변수값...");
인스턴스명.메서드명();
- constructor: 클래스가 인스턴스를 생성할때 호출되는 특별한 메서드
- 주로 객체의 초기 상태 설정 (생성자)
- 메서드: 클래스 내부에 정의된 함수
- 해당 클래스의 인스턴스가 수행할 수 있는 동작을 정의
클래스 캡슐화
- 데이터, 데이터를 처리하는 메서드를 하나의 단위로 묶고,
외부에서 직접 접근할 수 있도록 보호하는 것 - 데이터의 무결성 유지, 외부에서의 잘못된 접근 방지
ES2022~: #기호를 사용해서private필드 정의 가능.1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
// 캡슐화 (ES2022~) class 클래스명 { // 1. 비공개 필드 선언 #필드이름 = 초기값; // 2. 생성자 (선택) constructor(초기값) { this.#필드이름 = 초기값; } // 3. Getter (읽기 접근 허용) get 필드이름() { return this.#필드이름; } // 4. Setter (쓰기 접근 허용 + 유효성 검사) set 필드이름(새값) { if (/* 유효성 조건 */) { throw new Error("유효하지 않은 값입니다."); } this.#필드이름 = 새값; } } const 인스턴스명 = new 클래스명("매개변수값..."); console.log(인스턴스명.필드이름); // getter 호출 인스턴스명.필드이름 = "새로운값"; // setter 호출
캡슐화 특징
- 데이터 보호, 제어된 접근, 유지보수성
클래스 상속
- 클래스는 다른 클래스를 상속 받는다.
상속 → 기존의 클래스의 기능을 확장 or 재사용 가능
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
// 부모 클래스 정의 class 부모클래스 { constructor(매개변수들) { this.속성 = 값; } 부모메서드() { // 부모 클래스 코드 } } // 자식 클래스 정의 (상속) class 자식클래스 extends 부모클래스 { constructor(매개변수들) { super(부모매개변수); // 부모 생성자 호출 this.자식속성 = 값; } 자식메서드() { // 자식 클래스 코드 } }
extends: 클래스 상속을 구현하기 위해 사용되는 키워드- super(): 부모 클래스의 생성자 호출,
(반드시 자식 클래스의 생성자에서 호출!)
클래스 다형성
- 하나의 인터페이스나 메서드가 다양한 형태로 동작할 수 있는 능력
- 코드의 재사용성과 유연성을 높이기 위해
클래스 Overriding
1 2 3 4 5 6 7 8 9 10 11 12 13
// 부모 클래스 정의 class 부모클래스 { 메서드이름() { // 부모의 기본 동작 } } // 자식 클래스 정의 (상속 후 오버라이딩) class 자식클래스 extends 부모클래스 { 메서드이름() { // 자식이 재정의한 동작 } }
- 다양한 객체가 동일한 인터페이스를 사용해서,
각자의 고유한 동작을 수행할 수 있다!
This post is licensed under CC BY 4.0 by the author.