class User {
public name: string;
constructor(){
this.name = 'kim';
}
}
let user = new User();
user.name = 'park'; //가능
public이 붙은 속성은 자식 object들이 마음대로 사용하고 수정가능합니다.
기본적으로 붙어있는 속성이기에 생략해도 public이 자동으로 붙습니다
class User {
public name :string;
private familyName :string;
constructor(){
this.name = 'kim';
let hello = this.familyName + 'hello'; //가능
}
}
let user = new User();
user.name = 'park'; //가능
user.familyName = 123; //에러
private 붙은 속성들은 오직 해당 클래스 안에서만 수정이 가능합니다.
이렇게 속성을 외부에서 숨기고 싶을 때 private 키워드를 이용합니다.
private 키워드는 class 내의 함수에도 붙일 수 있습니다.
class User {
protected name = 'kim';
}
class NewUser extends User {
changeName(){
this.name = 'park';
}
}
클래스 내부와 해당 클래스를 상속받은 자식 클래스에서만 접근이 가능합니다
class 여러개 만들 때 class 끼리 공유할 수 있는 속성을 만들고 싶으면 protected,
class 하나 안에서만 쓸 수 있는 속성을 만들고 싶으면 private 을 씁니다
클래스를 역행하는 기능 (?)
class User {
static x = 10;
y = 20;
}
let user1 = new User();
user1.x //오류
User.x //10
인스턴트가(클래스에서 생성된 객체) 가져다 쓸수없게 만들어 준다
함수도 static 붙일 수 있다
extends 로 class를 복사할 경우 static 붙은 것들도 같이 상속됩니다