JS' 공부흔적
[TypeScript] 클래스의 접근 제한자 본문
728x90
Typescript에서의 클래스에는 C++, 자바처럼 다른 객체지향 언어와 마찬가지로 접근 제한자가 존재한다.
public
해당 클래스의 내부와 자식 클래스 및 클래스 인스턴스에서도 모두 접근 가능하다.
class Car {
name: string = "car"; //name 앞에 public을 명시하지 않아도 default가 public임
color: string;
constructor(color: string) {
this.color = color;
}
}
class BMW extends Car {
constructor(color: string) {
super(color); //파생 클래스는 무조건 super를 써야함
}
showName() {
console.log(this.name); //public이라 사용 가능
}
}
const ex = new BMW("black");
console.log(ex.name); //car
private
해당 클래스 내부에서만 접근 가능하다.
class Car {
#name: string = "car"; // name 앞에 private를 붙이는 것과 동일
color: string;
constructor(color: string) {
this.color = color;
}
}
class BMW extends Car {
constructor(color: string) {
super(color); //파생 클래스는 무조건 super를 써야함
}
showName() {
console.log(this.name); //error
}
}
const ex = new BMW("black");
console.log(ex.name); //error
protected
해당 클래스의 내부 및 자식 클래스에서만 접근 가능하다.
class Car {
protected name: string = "car"; //protected 선언
color: string;
constructor(color: string) {
this.color = color;
}
}
class BMW extends Car {
constructor(color: string) {
super(color); //파생 클래스는 무조건 super를 써야함
}
showName() {
console.log(this.name); //자식 클래스 내부에서 사용 가능
}
}
const ex = new BMW("black");
console.log(ex.name); //error
728x90
반응형