멍발자의 개발
액세스와 캡슐화 본문
public과 private를 합쳐서 액세스 한정자라고 부른다.
private
public과 다르게 private 연산자를 쓰면 해당 클래스 내에서만 볼 수 있게 된다.
class Computer2 { // 기본값 액세스한정자
private String os; // private 멤버변수
private int memory; // private 맴버변수
public void show() { // public 맴버 메소드
System.out.println("PC의 OS는 " + os + "입니다.");
System.out.println("메모리는 " + memory + "GB입니다.");
}
}
public class PrivateMember { // public 액세스한정자
public static void main(String[] args) {
Computer2 com = new Computer2();
com.os = "Windows 11"; // private 멤버변수(os)액세스
com.memory = -5445; // private 멤버변수(memory)액세스
com.show();
}
}
//결과
java: os has private access in chap12.Computer2
//라는 오류가 뜬다 Computer2라는 클래스에서만 사용이 가능하다는 것이다.
멤버를 private 하다는 건 부정확한 값을 설정하는 것을 막는 것과 동시에 값의 설정도 할 수 없다.
public
public 메소드는 어디서라도 액세스 할 수 있다는 특징을 가진다.
액세스 한정자 정보
1. public : 모든 장소에서 액세스 가능
2. protected : 같은 패키지 및 상속하는 서브클래스에서만 액세스할 수 있고 외부에서는 액세스 할 수 없다.
3. 기본값 (한정자 없음) : 같은 패키지에 속하는 클래스 내에서 액세스할 수 있으나 외부에서는 액세스 할 수 없다.
4. private: 자신이 포함된 클래스 내에서만 액세스 할 수 있다.
캡슐화
멤버 변수에 private를 붙여서 다른 사람으로부터의 액세스를 제한하고 전용의 메소드를 준비하는 것이 캡슐화다.
1. 필드 변수를 private로 숨긴다.
2. 필드 변수의 값을 취득 + 설정하는 public 메소드를 준비.
3. 멤버 변수로의 직접적인 엑세스는 금지하고 멤버 변수의 값을 설정하는 (setter 메소드나 취득하는 메소드(getter 메소드)를 준비한다. 그럼 필드에 정해진 조작만 할 수 있도록 강제할 수 있다.
** 필요에 따라 getter 메소드만 구현될 수 있고 setter 메소드만 구현될 수 있다.
JavaBeans
범용성을 갖춘 클래스다.
(1)인수가 없는 생성자를 가지고 + (2)접근자 메소드를 가지는 클래스가 된다.
GUI부품이나 데이터 베이스 액세스 등에서 큰 역할을 담당한다.