Typescript에서 protected
접근 제어자는 클래스의 멤버 변수 및 메서드를 해당 클래스와 그 클래스를 상속받은 클래스에서 접근할 수 있도록 해줍니다. 이를 통해, 멤버 변수와 메서드를 은폐하고 보다 안전한 상속을 구현할 수 있습니다.
protected
키워드의 사용
class Parent {
protected name: string;
constructor(name: string) {
this.name = name;
}
protected sayHello(): void {
console.log(`Hello, ${this.name}!`);
}
}
class Child extends Parent {
protected age: number;
constructor(name: string, age: number) {
super(name);
this.age = age;
}
public introduce(): void {
this.sayHello();
console.log(`I'm ${this.age} years old.`);
}
}
const child = new Child('Alice', 10);
child.introduce();
위의 예제에서 protected
키워드를 사용하여 name
과 sayHello
메서드가 Parent
클래스 내부와 그 클래스를 상속받은 Child
클래스 내부에서만 접근 가능하도록 설정했습니다.
상속과 접근 제어자
protected
로 설정된 멤버 변수 및 메서드는 해당 클래스를 상속받은 클래스에서 접근할 수 있으며, 인스턴스에서는 직접 접근할 수 없습니다. 이를 통해 상속받은 클래스에서 부모 클래스의 내부 구현에 접근하여 사용할 수 있고, 이를 통해 코드의 재사용과 유지보수성을 높일 수 있습니다.
왜 protected
를 사용해야 할까?
protected
를 사용하면 상속의 안전한 사용이 가능해집니다. 다른 클래스에서 잘못된 용도로 상속된 메서드나 멤버 변수에 접근하는 것을 막을 수 있으며, 코드 유지보수성을 더 높일 수 있습니다.
protected
는 클래스의 내부 구현을 외부로부터 은폐함으로써 캡슐화를 실현하고, 상속에 의한 다형성이나 동적 바인딩을 구현하는 데 있어 중요한 역할을 합니다.
결론
protected
접근 제어자를 사용하여 클래스의 내부 구현을 외부에서 은폐하고, 상속을 안전하게 사용할 수 있도록 할 수 있습니다. 이를 통해 코드의 안정성과 유연성을 높이고, 객체 지향 프로그래밍의 핵심 원칙인 캡슐화와 상속을 적절히 활용할 수 있습니다.
참고: Typescript Handbook - Protected