Java/Basic

[Java_Basic]정보 은닉 그리고 캡슐화(윤성우의 열혈 Java 프로그래밍)

bangle0621 2021. 1. 2. 02:48

정보 은닉 

클래스 외부에서 데이터에 직접 접근하는 것을 막겠다

 

논리적 오류의 경우 컴파일 오류가 발생 하지 않는다.

직접 접근을 허용하지 않고 논리적 오류를 물리적 오류로 이어지도록 강제한다.

 

class Circle{
	double rad = 0;
	final double PI = 3.14;

	public Circle(double r){
		setRad(r);		//아래에 정의된 setRad  메소드 호출을 통한 초기화
	}
	public void setRad(double r){
		if(r<0){
			rad = 0;
			return;
		}
		rad = r;
	}
	public double getArea(){
		return (rad * rad)*PI;
	}
}

class UnsafeCircle{
	public static void main(String args[]){
		Circle c = new Circle(1.5);
		System.out.println(c.getArea());

		c.setRad(2.5);
		System.out.println(c.getArea());
		c.setRad(-3.3);
		System.out.println(c.getArea());
		c.rad= -4.5;	//옳지 않은 접근 방법. 문제가 되는 부부
		System.out.println(c.getArea());
	}
}

private 선언

해당 클라스에 private 한 멤버가 되는 것

 

private 선언이 되면 클래스 내부에서만 접근을 허용하겠다는 의미

직접 접근이 불가하게 된다. 접근 수준 지시자/

 

Setter

인스턴스 변수의 값을 설정하는 용도로 정의된 메소드

변수의 이름이 name일 때. 메소드의 이름은 setName 으로 짓는 것이 관례

 

Getter

인스턴스 변수의 값을 참조하는 용도로 정의된 메소드

변수의 이름이 name일 때, 메소드의 이름은 getName으로 짓는 것이 관례