///////
Search

10_접근제한자와 정보은닉_이연재

부등호가 큰 것이 많은 접근을 허용한다.
클래스 정의 대상: 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를 이용해 매개 변수에 잘못된 값이 넘어오는 경우, 이를 사전에 차단한다.