1 minute read

  • 객체 지향 프로그래밍에선 내부/외부 인터페이스 구분하는 것을 캡슐화 라는 용어 사용해 설명

  • 캡슐화의 이점은 사용자가 내부로 들어가 마음대로 조작하지 못 하도록 하는 것.

  • 내부/외부 인터페이스 엄격하게 구분 시 클래스 개발자들은 사용자에게 알리지 않고 자유롭게 내부 프로퍼티와 메서드 수정 가능

  • 복잡성 은닉이란 구현 세부사항을 내부 인터페이스에 넣어두고 외부 인터페이스에는 단순함만 남기는 것

  • 복잡성 은닉시 외부 인터페이스에 대한 설명도 문서화하기 쉬워짐

  • 내부 인터페이스 숨기는 방법은 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] 사용할 수 없음(보안 강화를 위해)

Categories: ,

Updated: