한 입 크기로 잘라먹는 타입스크립트 - 접근 제어자
1. 접근 제어자
클래스 생성시 특정 필드나 메서드에 접근할 수 있는 범위 설정.
public : 아무 제약이 없는 상태. 클래스 외부에서 접근 가능.
private : 클래스 외부에서 접근 불가.
protected : 클래스 외부에서 접근 불가. 파생 클래스에서 접근 가능. (public 과 private 의 중간 느낌)
생성자의 매개변수에도 접근제어자 설정이 가능하다. 이 때, 필드 정의는 반드시 생략해야 한다. 필드 초기화도 생략 가능하다.
생성자의 매개변수에 접근제어자 설정시, 자동으로 필드도 정의하고, 필드의 값도 자동으로 초기화하기 때문이다.
- chapter2.ts
/**
* 접근 제어자 (access modifier)
*/
class Employee {
// 필드
/*
private name: string;
protected age: number;
public position: string; // public 생략 가능 (기본값이기 때문)
*/
// 생성자
constructor(
private name: string
, protected age: number
, public position: string
) {
/*
this.name = name;
this.age = age;
this.position = position;
*/
}
// 메서드
work() {
console.log(`${this.name} 일함`); // 클래스 내부 메서드에서 접근 가능
}
}
// 파생 클래스
class ExecutiveOfficer extends Employee { // Employee 상속
// 필드
officeNumber: number;
// 생성자
constructor(name: string, age:number, position: string, officeNumber: number) {
super(name, age, position); // 자바스크립트와 다르게 super() 생략하면 오류, 매개변수를 빠트려도 오류
this.officeNumber = officeNumber;
}
// 메서드
func() {
// this.name; // 파생 클래스에서도 접근 불가
this.age; // 파생 클래스에서 접근 가능
}
}
// 클래스의 인스턴스
const employee = new Employee('송진성', 31, 'developer');
// employee.name = '홍길동'; // private 접근제어자라 클래스 외부에서 접근 불가
// employee.age = 32; // protected 접근제어자라 클래스 외부에서 접근 불가
employee.position = '디자이너'; // public 접근제어자라 클래스 외부에서 접근 가능
console.log(employee);
터미널에서 tsx 명령어를 통해 실행한다.
- Terminal
tsx src/chapter2.ts
Employee { name: '송진성', age: 31, position: '디자이너' }
접근제어자는 객체지향 프로그래밍을 할 때 대단히 중요한 역할을 하는 문법이다.
참고링크 : https://www.inflearn.com/course/%ED%95%9C%EC%9E%85-%ED%81%AC%EA%B8%B0-%ED%83%80%EC%9E%85%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8#
한 입 크기로 잘라먹는 타입스크립트(TypeScript) 강의 | 이정환 Winterlood - 인프런
이정환 Winterlood | 문법을 넘어 동작 원리와 개념 이해까지 배워도 배워도 헷갈리는 타입스크립트 이제 제대로 배워보세요! 여러분을 타입스크립트 마법사🧙🏻♀️로 만들어드립니다., 프론
www.inflearn.com
'강의 실습 > 한 입 크기로 잘라먹는 타입스크립트(TypeScript)' 카테고리의 다른 글
제네릭 소개 (0) | 2024.11.21 |
---|---|
인터페이스와 클래스 (0) | 2024.11.20 |
타입스크립트의 클래스 (1) | 2024.11.18 |
자바스크립트의 클래스 소개 (1) | 2024.11.17 |
인터페이스 합치기 (1) | 2024.11.13 |
댓글