[typescript] protected 접근 제어자와 클래스 상속

Proteted 키워드

protected 키워드는 클래스 멤버에 대한 접근 제어 레벨을 나타냅니다. 이 키워드가 붙은 멤버들은 해당 클래스에서 직접 접근 가능하고, 동일한 클래스를 상속한 하위 클래스에서도 접근 가능합니다. 하지만 클래스 밖에서는 접근이 불가능합니다.

class Person {
    protected name: string;

    constructor(name: string) {
        this.name = name;
    }
}

class Employee extends Person {
    private department: string;

    constructor(name: string, department: string) {
         super(name);
         this.department = department;
    }

    public getElevatorPitch() {
        return `Hello, my name is ${this.name} and I work in ${this.department}.`;
    }
}

let howard = new Employee('Howard', 'Sales');
console.log(howard.getElevatorPitch()); // "Hello, my name is Howard and I work in Sales."
console.log(howard.name); // error

위의 예시에서 Person 클래스에 있는 protected name 프로퍼티는 Employee 클래스에서 상속되고, 이를 활용하여 getElevatorPitch 메소드가 name을 사용하여 값을 반환합니다.

클래스 상속

클래스 간의 상속은 타입스크립트에서 일반적으로 사용되며, extends 키워드를 사용하여 부모 클래스를 확장합니다. 위의 예시에서 Employee 클래스는 Person 클래스를 상속합니다. 따라서 Employee 클래스는 Person 클래스에 포함된 protected name 프로퍼티를 사용할 수 있습니다.

protected 접근 제어자와 클래스 상속을 사용하여 다른 클래스와의 관계를 관리하면, 코드를 더 강력하고 유지보수하기 쉽게 만들 수 있습니다.