name에는 옵셔널 수식어를, age에는 readonly 수식어를 붙였습니다. readonly이므로 changeAge 메서드에서 에러가 발생합니다.
married에는 protected 수식어가, value에는 private 수식어가 붙었습니다. name이나 age 속성에 public이 붙지는 않았지만 protected나 private이 아니면 기본적으로 public입니다.
• public 속성인 경우: 선언한 자신의 클래스, 자손 클래스, new 호출로 만들어낸 인스턴스에서 속성을 사용할 수 있습니다. 앞의 예제에서는 name 속성을 보면 됩니다. 자손 클래스란 extends로 상속받은 클래스를 의미합니다. 여러 번 extends해도 자손 클래스입니다.
• protected 속성인 경우: 자신의 클래스와 자손 클래스에서는 속성을 사용할 수 있으나 인스턴스에서는 사용할 수 없습니다. married 속성은 child.married에서 에러가 발생합니다.
• private 속성인 경우: 자신의 클래스에서만 속성을 사용할 수 있습니다. value 속성은 Child 클래스나 child.value에서 에러가 발생합니다.