public
: default값이며, 어디서든 접근 가능
protected
: 클래스 내 & 상속받은 자식 클래스 내에서 접근 가능
private
: only 클래스 내에서만 접근 가능
class Post {
public id: number = 0; // 적어주지 않으면 defualt인 public
protected title: string = "";
constructor(id: number, title: string){
this.id = id;
this.title = title;
}
getPost(){
return `postId ${this.id}, postTitle: ${this.title}`;
}
}
class PostB extends Post {
getPost(){
return this.title; // protected 는 하위 클래스에서 사용 가능
}
}
const post: Post = new Post(1, "title 1");
console.log(post.id);
console.log(post.title); //error
좀 더 간략하게 작성해보기
class Post {
constructor(
public id: number = 0, // 여기서는 public 생략 불가
protected title: string = ""
){}
getPost(){
return `postId ${this.id}, postTitle: ${this.title}`;
}
}
class PostB extends Post {
getPost(){
return this.title; // protected 는 하위 클래스에서 사용 가능
}
}
const post: Post = new Post(1, "title 1");
console.log(post.id);
console.log(post.title); // error