[typescript] protected 접근 제어자와 데이터 캡슐화

클래스 상속 및 데이터 캡슐화는 소프트웨어 개발에서 중요한 개념입니다. TypeScript에서 protected 접근 제어자를 사용하여 데이터를 안전하게 캡슐화하고, 상속 관계의 클래스들 간의 접근을 제어할 수 있습니다.

protected 키워드

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 getDetails() {
        return `Name: ${this.name}, Department: ${this.department}`;
    }
}

const emp = new Employee("John", "Sales");
console.log(emp.getDetails()); // Name: John, Department: Sales
console.log(emp.name); // Error: 'name' is protected and only accessible within class 'Person' and its subclasses.

위의 예제에서 name 멤버 변수는 Person 클래스에서 protected로 선언되어 있으므로, Employee 클래스에서 직접 접근할 수 없습니다. Employee 클래스의 getDetails 메서드를 통해 name 멤버 변수에 접근하여 외부에 필요한 정보를 제공합니다.

데이터 캡슐화

protected 접근 제어자를 사용함으로써 데이터를 캡슐화하여 외부에서의 무단 접근을 방지하고, 안전한 상태로 유지할 수 있습니다. 이를 통해 코드의 견고성을 높이고, 유지 보수와 확장성을 향상시킬 수 있습니다.

상속 관계를 가진 클래스 간의 데이터 교환을 안전하게 할 수 있는 protected 접근 제어자를 적절히 활용하여, 안정적이고 유연한 소프트웨어를 개발할 수 있습니다.

결론

TypeScript에서 protected 접근 제어자를 효과적으로 활용하여 데이터를 캡슐화하고, 상속 관계의 클래스 간의 안전한 데이터 교환을 지원할 수 있습니다. 이를 통해 안전하고 유연한 코드를 작성하고, 유지 보수하기 쉬운 소프트웨어를 개발할 수 있습니다.


참고 문헌:

TypeScript 공식문서: Protected