Dev/JAVA

JAVA private 를 사용하자. 정보은닉과 캡슐화.

Fehoon- 2018. 1. 20. 22:32

 

정보은닉(information Hiding)과 캡슐화

 

 

사진출처:slidesplayer.org

 

private를 대학교에서 공부할 때는 왜 이것을 굳이 써야하는지 의문이었는데..

회사에 입사하고.. 보안쪽을 공부하다보니까 private 선언을 해야 하는 이유를 알겠다.

 

위 그림 속 선생님이 말씀하시듯이 보통은 몇개의 메소드만 외부로 공개되고 그 메소드 호출을 통하여 데이터들의 값이 변경되거나 수정 등등의 작업이 이루어지게 캡슐화 되어있다.

 

인스턴스 변수를 private로 설정하지 않을 경우 우리는 해당 변수에 대해서 다음과 같이 직접 접근이 가능하다.

 

 

class Abc{
    int a;
    int b;

    public Abc(a,b){
        this.a = a;
        this.b = b;
    }
}

 

위와 같이 abc라는 클래스가 있다고 치자 그리고 인스턴스를 아래와 같이 생성할 경우

 

Abc abc = new Abc(1,2);

 

우리는 abc.a=error; abc.b=1; 과 같이 해당 변수에 직접 접근하여 그 값을 수정할 수 있다.

위 예제에서는 크게 문제가 되지않는다. 하지만 이런 접근은 위험하다.

개발자의 실수로 이어질 수도 있으며 안정성 또한 떨어진다.

 

가급적이면 무조건 인스턴스 변수는 private로 설정해주어야 한다.

 

 

 

class Abc{

    private int a;
    private int b;

    public Abc(a,b){
        this.a = a;
        this.b = b;
    }
}

 

 

이렇게 설정해 줄 경우 메소드를 사용하지 않고 직접 해당 변수에 접근하는 일을 막을 수 있기 때문에 안정성을 높일 수 있다.

 

* private로 선언되는 인스턴스 변수와 메소드는 선언된 클래스 내부에서만 접근이 가능하다.

 

참고 서적: 난 정말 JAVA를 공부한 적이 없다구요!

반응형