타입스크립트 protected 접근 제한자 예제
타입스크립트( Typescript )의 protected 접근제한자는 클래스의 속성이나 메서드에 사용한다.
protected로 선언된 멤버는
해당 클래스 내부와 그 클래스를 상속받은 자식 클래스 내부에서 접근할 수 있다.
하지만, 클래스 외부에서 생성한 객체를 통해 직접 접근할 수는 없다.
접근제한자 protected는 부모 클래스가 가진 기능이나 데이터를 자식 클래스에서는 사용할 수 있고, 외부에서 임의로 접근할 수 없다.
private 접근제한자가 클래스 내부에서만 접근할 수 있는 것과 달리,
protected 접근제한자는 상속 관계에 있는 클래스까지 접근 범위를 확장한다.
접근제한자 protected는 클래스 상속 구조에서 공통 기능을 보호하면서 자식 클래스에 필요한 접근 권한을 제공하는 용도로 사용할 수 있다.
⊙
class User {
protected name: string;
constructor(name: string) {
this.name = name;
}
introduce() {
console.log(`제 이름은 ${this.name}입니다.`);
}
}
/*
접근 금지
- 외부 접근은 막고, 상속받은 클래스에서는 사용할 수 있도록 허용
*/
const user = new User("철수");
console.log(user.name);⊙
class User {
protected name: string;
constructor(name: string) {
this.name = name;
}
}
class Admin extends User {
showAdminName() {
console.log(`관리자 이름: ${this.name}`);
}
}
const admin = new Admin("홍길동");
admin.showAdminName();
/*
- 외부 접근 불가
*/
console.log(admin.name);⊙
/*
- public
*/
class User {
public name = "철수";
}
const user = new User();
console.log(user.name);
/*
- protected
*/
class User {
protected name = "철수";
}
class Admin extends User {
printName() {
console.log(this.name);
}
}
/*
- private
*/
class User {
private password = "1234";
checkPassword() {
console.log(this.password);
}
}
class Admin extends User {
check() {
console.log(this.password);
}
}⊙
class User {
protected getRole() {
return "user";
}
}
class Admin extends User {
printRole() {
console.log(this.getRole());
}
}
const admin = new Admin();
admin.printRole();
/*
- 외부 호출 금지
*/
admin.getRole();
댓글
댓글 쓰기