1. private 속성

class Player {
  constructor(private firstName: string, private lastName: string, public nickname: string) {}
}

const nico = new Player('nico', 'las', '니꼬');

nico.firstName  // error : 'firstName' 속성은 private이며 'Player' 클래스 내에서만 엑세스할 수 있습니다.

2-1. abstract class

// abstract class : 다른 클래스가 상속받을 수 있는 클래스
// 그러나 abstract class는 직접 인스턴스를 만들 수 없다.
abstract class User {
  constructor(private firstName: string, private lastName: string, public nickname: string) {}

  private getFullName() {
    return `${this.firstName} ${this.lastName}`;
  }

  public getFullName2() {
    return `${this.firstName} ${this.lastName}`;
  }
}

class Player extends User {}

const nico = new Player('nico', 'las', '니꼬');

Untitled

2-2. abstract method

: 추상 클래스 내에서 메소드를 정의하되, 메소드의 call signature 만 정의

abstract class User {
  constructor(private firstName: string, private lastName: string, public nickname: string) {}

  abstract getNickName(): void;
}

Untitled

User 클래스를 상속받은 Player 클래스에서 getNickName을 구현해야 한다고 알려주고 있다.