PHP 객체 지향 프로그래밍에서의 비공개 속성

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

비공개 속성의 이름은 접근 제어자 private를 사용하여 선언해야 합니다. 한번 해봅시다:

php<?php
  class User {
    private $name;
  }
?>

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

php<?php
  class User {
    private $name;
    
    public function __construct($name) {
      $this->name = $name;
    }
  }
?>

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

php<?php
  class User {
    private $name;
    
    public function __construct($name) {
      $this->name = $name;
    }
    
    public function show() {
      return $this->name;
    }
  }
?>

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

php<?php
  $user = new User('john');
?>

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

php<?php
  echo $user->name; // 오류
?>

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

php<?php
  echo $user->show(); // 'john' 출력
?>
Задание 1

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

Задание 2

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

Задание 3

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