[자바 객체 지향] 캡슐화

2021. 8. 5. 17:56CSE/JAVA

1. 객체 멤버의 접근 제어자

- UML 표기법

  • - : private 접근 제어자
  • ~ : default 접근 제어자
  • # : protected 접근 제어자
  • + : public 접근 제어자

- public : 모두가 접근 가능

- protected : 상속 또는 같은 패키지 내의 클래스에서 접근 가능

- [default] : 같은 패키지 내의 클래스에서 접근 가능

- private : 본인만 접근 가능

 

* 만약에 aaa.jar 파일 안에 packageOne 패키지가 있고, bbb.jar 파일 안에 packageOne 패키지가 있다면

=> aaa.jar 파일 안의 packageOne 패키지 내 클래스나 객체는 bbb.jar 파일 안에 packageOne 패키지가 가진 public 멤버 뿐만 아니라 [default] 멤버와 protected 멤버에 자유롭게 접근할 수 있다.

=> 주의할 점!!

 

- 상속을 받지 않았다면, 객체 멤버는 객체를 생성한 후 객체 참조 변수를 이용해 접근해야한다.

- 정적 멤버는 클래스명.정적멤버 형식으로 접근하는 것을 권장한다.

=> 일관된 형식으로 접근하기 위해서!

=> 물리적으로도 돌아가지 않게 된다.

 

2. 참조 변수의 복사

- 기본 자료형 변수를 복사하는 경우 : Call By Value (값에 의한 호출)

=> 두 변수는 서로 영향을 미치지 않는다.

- 객체 참조 변수를 복사하는 경우: Call By Reference (참조에 의한 호출), Call By Address (주소에 의한 호출)

=> 참조하는 메모리 주소를 복사하는 것

=> 둘 다 같은 주소를 가리키기 때문에 서로 영향을 미치게된다. 하지만 그렇다고 두 변수가 같은 변수는 아니다.