이번 포스팅은 접근 제어와 정보은닉에 대한 포스팅입니다.
1. 접근 제어 지시자 (access modifier)
1) 클래스 외부에서 클래스의 멤버변수, 메서드, 생성자를 사용할 수 있는지 여부를 지정
2) public : 클래스의 외부 어디서나 접근 할 수 있음.
3) protected : 같은 패키지나 상속관계의 클래스에서 접근 가능. 그 외 외부에서는 접근 할 수 없음.
4) (아무 것도 없음 – default) : 같은 패키지 내부에서만 접근 가능 (상속 관계라도 패키지가 다르면 접근 불가)
5) private : 같은 클래스 내부에서만 접근 가능, 외부 클래스나 상속관계의 클래스에서도 접근 불가
6) 변수나 메서드에 접근 제한자를 지정하면 접근을 제한 할 수 있음.
2. get() / set() 메서드
1) private으로 선언된 멤버 변수(필드)에 대해 접근, 수정할 수 있는 메서드를 public으로 제공
2) get() 메서드만 제공되는 경우 read-only 필드
3. 정보 은닉 (information hiding)
1) OOP에서 정보 은닉은 외부에서 접근 가능한 최소한의 정보를 오픈함.
2) 객체의 오류를 방지함으로써 클라이언트 객체가 더 효율적으로 활용할 수 있도록함.
4. 캡슐화 (endcapsulation)
1) 꼭 필요한 정보와 기능만 외부에 오픈함.
2) 대부분의 멤버 변수와 메서드를 감추고 외부에 통합된 인터페이스만 제공하여 일관된 기능을 구현하게 함.
5. 객체 자신을 가리키는 this
1) 역할
– 인스턴스 자신의 메모리를 가리킴
– 생성자에서 또 다른 생성자를 호출 할 때 사용
– this()
– 자신의 주소(참조값)를 반환함.
2) 생성자에서 다른 생성자를 호출하는 this()
– 클래스에 생성자가 여러 개인 경우, this()를 이용하여 생성자에서 다른 생성자를 호출할 수 있음.
– 생성자에서 다른 생성자를 호출하는 경우, 인스턴스의 생성이 완전하지 않은 상태이므로 this()이전에 다른 statement를 쓸 수 없음.