본문 바로가기
웹개발/Java

캡슐화 - 정보은닉

by 인생여희 2022. 10. 14.

캡슐화 - 정보은닉

 

객체가 특정한 목적을 위해 필요한 변수나 메소드를 하나로 묶는 것을 뜻한다.

클래스를 만들때 이 클래스에서 만들어진 객체가 목적을 잘 수행할 수 있도록 변수와 메서드를 관련성이 있게 클래스에 구성해야 한다.

 

1.상속을 받지 않았다면 객체 멤버는 객체를 생성한 후 객체 참조 변수를 이용해 접근해야 한다.

 

2.정적 멤버는 클래스명.정적멤버 형식으로 접근하는 것을 권장한다.

 

정적 멤버인 경우 클래스명.정적멤버 형식으로 접근해야하는 이유는 일관된 형식으로 접근하기 위해서다.

 

그리고 객체를 생성한 경우에는 객체참조변수명.정적멤버 형태로도 접근할 수도 있다.

 

정적 멤버는 어떤 경우에 쓰나?

-사람 클래스의 인구수

-고양이의 다리 개수

 

사람.인구, 고양이.다리개수 형식으로 접근하는 것이 홍길동.인구수, 키티.다리개수 형식으로 접근하는 것보다 권장된다.

즉, 정적 멤버에 접근할 때는 객체참조변수명.정적멤버 형식으로 접근하는 것 보다는 클래스명.정적멤버 형식으로 접근하라는 것이다.

 

또한 메모리의 물리적 접근에 따른 이유도 존재한다.

 

위의 그림을 보면 클래스명.정적 멤버 vs 객체 참조변수명.정적멤버 형식의 접근법 중에 어떤 것을 써야 할지 확실해 진다.

 

정리

1.private을 쓰는 이유는 상대방이 내 코드를 볼때 이 변수나 메서드가 외부에서 호출해서 사용되는 건지, 해당 클래스 내에서만 사용되는 건지 확실하게 구분하기 위함임

 

2.객체지향 프로그래밍 관점에서 객체 외부에서 객체 내부로 직접 데이터나 연산에 접근하면 안되기 때문이다.(캡슐화, 은닉화)