BackEnd/JavaProgram
[ JAVA ] 접근 지정자와 캡술화, 정보 은닉
jimin-log
2023. 1. 30. 03:15
접근 지정자
클래스 외부에서 클래스의 멤버 변수, 메서드, 생성자를 사용할 수 있는지 여부를 지정하는 키워드
접근 지정자 설정은 객채를 사용할때 오류를 줄일 수 있다.
💡 접근 지정자 변수
필드는 private로 선언하는 것이 좋다. (다이렉트로 필드에 접속하는 일은 없도록 , 상수 빼고)
접근 지정자 | 사용방법 | 내용 |
private | private 클래스(..) | 같은 클래스 내부에서만 접근가능 |
(default) | 클래스 (..) | 같은 패키지 내에서 접근가능 |
protected | protected 클래스 (..) | 같은 패키지 내에서 + 상속관계 접근 가능 |
public | public 클래스(..) | 모든 패키지에서 생성자 호출 가능 |
💡 GET / SET 메서드
- private 으로 선언된 멤버 변수 (필드)에 대해 접근, 수정할 수 있는 메서드를 public으로 제공
- get() 메서드만 제공 되는 경우 read-only 필드
- 이클립스에서 자동으로 생성됨
💡 정보은닉
- private으로 제어한 멤버 변수도 SET/GET 메서드로 접근이 가능하지만 , private 일때 각 변수에 대한 제한을 SET/GET 메서드에서 제어 할 수 있다.
- 객체 지향 프로그램에서 정보 은닉은 필요한 외부에서 접근 가능한 최소한의 정보를 오픈함으로써 객체의 오류를 방지하 클라이언트 객체가 더 효율적으로 객체를 활용할 수 있도록 해준다.
private int day;
private int month;
private int year;
private boolean isValid; //기본은 false
public int getMonth() {
return month;
}
public void setMonth(int month) {
if (month < 1 || month > 12) {
isValid = false;
}else {
isValid = true;
this.month = month;
}
}
캡슐화
- 정보를 감싸서 꼭 필요한 정보와 기능만 외부에 오픈함
- 대부분의 멤버 변수와 메서드를 감추고 외부에 통합된 인터페이스만은 제공하여 일관된 기능을 구현 하게 함
- 각각의 메서드나 멤버 변수를 접근함으로써 발생하는 오류를 최소화 한다.