private, protected 프로퍼티와 메서드
-
객체 지향 프로그래밍에선 내부/외부 인터페이스 구분하는 것을 캡슐화 라는 용어 사용해 설명
-
캡슐화의 이점은 사용자가 내부로 들어가 마음대로 조작하지 못 하도록 하는 것.
-
내부/외부 인터페이스 엄격하게 구분 시 클래스 개발자들은 사용자에게 알리지 않고 자유롭게 내부 프로퍼티와 메서드 수정 가능
-
복잡성 은닉이란 구현 세부사항을 내부 인터페이스에 넣어두고 외부 인터페이스에는 단순함만 남기는 것
-
복잡성 은닉시 외부 인터페이스에 대한 설명도 문서화하기 쉬워짐
-
내부 인터페이스 숨기는 방법은 protected 나 privae 프로퍼티 사용
-
public 이란 어디서든 접근할 수 있으며 외부 인터페이스를 구성함 (일반적으로 다룬 프로퍼티와 메서드)
-
protected 란 클래스 자신과 자식 클래스만 접근이 가능한 프로퍼티 (자식 클래스에서 접근하는 경우 많기에 private보다 자주 쓰임)
-
protected 필드는 _로 시작하며 JS에선 정식을 지원하진 않으므로 프로퍼티 정의된 클래스와 상속받는 클래스에서만 접근해야 함
-
protected 필드는 getter, setter 로 통제할 수 있음
-
읽기 전용 프로퍼티 원할 시 setter 만들지 않고 getter만 생성
-
getter, setter 함수는 get, set 문법이 아닌 일반 형식의 함수가 선호됨(다수의 인자 받을 수 있음)
-
protected 필드는 자연스러운 상속 가능
-
private 란 클래스 자신에서만 접근이 가능한 프로퍼티
-
private 필드는 #로 시작하며 JS 에서 지원(제안 목록에 등재된 문법)
-
private 필드는 public 과 상충하지 않으며 동시에 가질 수 있음
-
private 필드 값 필요할 시 getter, setter 로 내부에서 먼저 접근한 뒤 값 얻을 수 있음
-
private 필드는 this[name] 사용할 수 없음(보안 강화를 위해)