객체 지향에서의 캡슐화
- 객체의 속성(data fields)과 행위(메서드, methods)를 하나로 묶고,
- 실제 구현 내용 일부를 외부에 감추어 은닉한다.
- 캡슐화의 목적은 변경하기 쉬운 객체를 만드는 것이다.
- 캡슐화를 통해 객체 내부로의 접근을 제한하면 객체와 객체 사이의 결합도를 낮출 수 있기 때문에 설계를 좀 더 쉽게 변경할 수 있게 된다.
접근제어자
- public : 모두가 접근 가능
- protected : 상속 / 같은 패키지 내의 클래스에서 접근 가능
- [default] : 같은 패키지 내의 클래스에서 접근 가능
- private : 본인만 접근 가능
접근 제어자는 위 설명과 같이 절대 단순하지 않다. 특히 객체 멤버에 대한 접근인가, 정적 멤버에 대한 접근인가에 따라 생각할 것이 많아진다.
그리고 protected가 자신과 상속 관계에 있는 서브 클래스만 접근 가능한 걸로 착각하는 경우가 많은데, 같은 패키지라면 한 집에 산다고 생각하기에 접근 가능하다는 사실도 꼭 기억해야 한다.
기본 자료형 변수는 저장하고 있는 값을 그 값 자체로 해석한다. (Call By Value)
객체 참조 변수는 저장하고 있는 값을 주소로 해석한다. (Call By Reference)