캡슐화 - 정보은닉
객체가 특정한 목적을 위해 필요한 변수나 메소드를 하나로 묶는 것을 뜻한다.
클래스를 만들때 이 클래스에서 만들어진 객체가 목적을 잘 수행할 수 있도록 변수와 메서드를 관련성이 있게 클래스에 구성해야 한다.
1.상속을 받지 않았다면 객체 멤버는 객체를 생성한 후 객체 참조 변수를 이용해 접근해야 한다.
2.정적 멤버는 클래스명.정적멤버 형식으로 접근하는 것을 권장한다.
정적 멤버인 경우 클래스명.정적멤버 형식으로 접근해야하는 이유는 일관된 형식으로 접근하기 위해서다.
그리고 객체를 생성한 경우에는 객체참조변수명.정적멤버 형태로도 접근할 수도 있다.
정적 멤버는 어떤 경우에 쓰나?
-사람 클래스의 인구수
-고양이의 다리 개수
사람.인구, 고양이.다리개수 형식으로 접근하는 것이 홍길동.인구수, 키티.다리개수 형식으로 접근하는 것보다 권장된다.
즉, 정적 멤버에 접근할 때는 객체참조변수명.정적멤버 형식으로 접근하는 것 보다는 클래스명.정적멤버 형식으로 접근하라는 것이다.
또한 메모리의 물리적 접근에 따른 이유도 존재한다.
위의 그림을 보면 클래스명.정적 멤버 vs 객체 참조변수명.정적멤버 형식의 접근법 중에 어떤 것을 써야 할지 확실해 진다.
정리
1.private을 쓰는 이유는 상대방이 내 코드를 볼때 이 변수나 메서드가 외부에서 호출해서 사용되는 건지, 해당 클래스 내에서만 사용되는 건지 확실하게 구분하기 위함임
2.객체지향 프로그래밍 관점에서 객체 외부에서 객체 내부로 직접 데이터나 연산에 접근하면 안되기 때문이다.(캡슐화, 은닉화)
'웹개발 > Java' 카테고리의 다른 글
다형성에는 오버라이드와 오버로드가 있다 (0) | 2022.10.13 |
---|---|
상속은 상위 클래스기능을 하위 클래스로 확장하고 재사용하는 기술 (0) | 2022.10.13 |
클래스 맴버 vs 객체 멤버 (0) | 2022.10.11 |
자바에서 객체들은 메모리에 어떻게 표시될까? (0) | 2022.10.07 |
자바의 변수와 메서드는 메모리에 어떻게 표시될까 2 (0) | 2022.10.06 |