JavaScript의 OOP에서 비공개 속성

외부에서 읽고 쓸 수 있는 객체의 속성을 공개(public) 속성이라고 합니다. 반면 비공개(private) 속성도 존재하는데, 이는 클래스 내부에서만 접근 가능합니다.

비공개 속성의 이름은 # 기호로 시작해야 합니다. 또한, 이러한 속성은 반드시 클래스 코드의 시작 부분에 선언해야 합니다. 한번 해보겠습니다:

javascriptclass User {
  #name;
}

이제 우리의 속성에 데이터를 기록해 보겠습니다. 이는 예를 들어 클래스의 생성자에서 수행할 수 있습니다:

javascriptclass User {
  #name;
  
  constructor(name) {
    this.#name = name;
  }
}

이제 우리 속성의 값을 반환하는 메서드를 만들어 보겠습니다:

javascriptclass User {
  #name;
  
  constructor(name) {
    this.#name = name;
  }
  
  show() {
    return this.#name;
  }
}

사용자 이름을 매개변수로 전달하여 클래스의 객체를 생성해 보겠습니다:

javascriptlet user = new User('john');

클래스 외부에서 우리의 속성에 직접 접근하려고 시도하면 오류가 발생합니다:

javascriptconsole.log(user.#name); // 오류

반면 우리의 메서드를 호출하면 이 속성을 읽을 수 있습니다:

javascriptconsole.log(user.show()); // 'john' 출력
Задание 1

Employee 클래스에서 세 개의 비공개 속성: 이름, 급여, 나이를 만드세요.

Задание 2

생성자의 매개변수로 이러한 속성들의 값을 전달하세요.

Задание 3

직원의 데이터를 출력하는 메서드를 만드세요.