•
부등호가 큰 것이 많은 접근을 허용한다.
•
클래스 정의 대상: public, default
•
인스턴스 변수와 메소드 대상: public, protected, default, private
•
public: 어디서든 인스턴스 생성이 가능하다.
•
protected: 같은 패키지 내에서와 다른 패키지의 자손 클래스에 접근할 수 있다.
•
default: 같은 패키지 내에서만 접근이 가능하다.
•
private: 같은 클래스 내에서만 접근이 가능하다.
2. 정보은닉
•
클래스 내부에서 사용할 변수나 메서드를 private로 선언하여 외부에서 접근하지 못하도록 하는 것이다.
•
모든 변수는 무조건 private
•
모든 변수에 대해서 getter,setter 함수를 만들어서 값을 읽고 써야 한다.
•
getter, setter를 사용하는 이유: 객체 데이터를 외부에서 읽고 변경 시 객체의 무결성이 깨질 수 있기 때문에 꼭 메소드를 통해서만 데이터를 변경해야 한다.
class Circle{
private double rad = 0;
final double PI = 3.14;
public Circle(double r){
setRad(r);
}
public void setRad(double r){ //setter 메소드
if(r<0){
rad = 0;
return;
}
rad = r;
}
public double getRad(){ //getter 메소드
return rad;
}
public double getArea(){...}
}
public static void main(String args[]){
Circle c = new Circle(1.5);
System.out.println(c.getArea());
c.setRad(2.5); //setter를 이용해 데이터에 접근
System.out.println(c.getArea());
c.setRad(-3.3); //setter를 이용해 데이터에 접근
System.out.println(c.getArea());
c.rad = -4.5; //컴파일 오류로 이어짐
System.out.println(c.getArea());
}
•
getter와 setter를 이용해 매개 변수에 잘못된 값이 넘어오는 경우, 이를 사전에 차단한다.