클래스
클래스는 객체지향 프로그래밍 (OOP) 의 핵심 구성요소 중 하나로, 객체를 만들기 위한 틀(Template) 이다.
클래스의 구성요소
클래스에서는 같은 종류의 객체들이 공통적으로 가지는 속성(Attribute) 과 메서드(Method)를 정의한다.
속성 : 객체의 성질을 정의하는 것
ex) 붕어빵은 팥이란 속성이 있는 팥 붕어빵과 슈크림이라는 속성이 있는 슈크림 붕어빵이 있다.
메서드 : 객체의 성질을 변화시키거나 객체에서 제공하는 기능들을 사용하는 창구
ex) 붕어빵 주인은 팥 붕어빵에서 슈크림 붕어빵으로 전환할 수 있음, 붕어빵을 사는 고객들은 팥 붕어빵, 슈크림 붕어빵의 가격을 알 수 있음.
객체
객체란 클래스를 기반으로 생성되며 클래스의 instance 라고도 한다.
클래스 및 객체 정의 방법
TypeScript 에서 클래스를 정의하려면 class 키워드를 사용하면 된다. 클래스의 속성과 메소드를 정의하고, new 키워드를 사용하여 객체를 정의할 수 있음.
class Person {
name: string;
age: number;
constructor(name: string, age: number) {
this.name = name;
this.age = age;
}
sayHello() {
console.log(`안녕하세요! 제 이름은 ${this.name}이고, 나이는 ${this.age}살입니다.`);
}
}
const person = new Person('Spartan', 30);
person.sayHello();
생성자 (constructor)
- 생성자는 클래스의 인스턴스를 생성하고 초기화하는데 사용되는 특별한 메서드이다.
- 생성자는 클래스 내에서 constructor 이라는 이름으로 정의된다.
- 생성자는 인스턴스를 생성할 때 자동으로 호출되며, 클래스 내에 오직 하나만 존재한다.
- 보통 생성자로 객체 속성을 초기화 하는 것 뿐 아니라 객체가 생성이 될 때 꼭 되어야 하는 초기화 로직을 넣기도 함.
ex) DBConnector 라는 클래스가 있다면, 이 클래스 타입의 객체가 생성이 될 때 생성자에서 DB연결을 미리 해주면 편함.
클래스 접근 제한자
클래스에서는 속성과 메서드에 다음과 같은 접근제한자를 사용해 접근을 제한할 수 있다.
public
- 클래스 외부에서도 접근이 가능한 접근 제한자
- 접근 제한자가 선언이 되지 않았다면 기본적으로 접근 제한자는 public 이다.
- 보통은 클래스의 함수 중 민감하지 않은 객체 정보를 열람할 때나 누구나 해당 클래스의 특정 기능을 사용해야 할 때 쓰임.
private
- 클래스 내부에서만 접근이 가능한 접근 제한자
- 보통은 클래스의 속성은 외부에서 접근할 수 없도록 대부분 private 로 접근 제한자를 설정한다.
- 클래스의 속성을 보거나 편집하고 싶으면 별도의 getter, setter 메서드를 준비해 놓는 것이 관례
protected
- 클래스 내부와 해당 클래스를 상속받은 자식 클래스에서만 접근이 가능한 접근 제한자
class Person {
private name: string;
private age: number;
constructor(name: string, age: number) {
this.name = name;
this.age = age;
}
public sayHello() {
console.log(`안녕하세요! 제 이름은 ${this.name}이고, 나이는 ${this.age}살입니다.`);
}
}
'TypeScript' 카테고리의 다른 글
[TypeScript] 추상 클래스 (0) | 2023.07.26 |
---|---|
[TypeScript] 상속 (0) | 2023.07.26 |
[TypeScript] 프로젝트 세팅 (0) | 2023.07.26 |
[TypeScript] 유틸리티 타입 (2) | 2023.07.26 |
[TypeScript] enum 과 object literal 비교 (0) | 2023.07.26 |