item 16 : public 클래스에서는 public 필드가 아닌 접 근자 메서드를 사용하라
1. 퇴보한 클래스의 문제점
class Point {
public double x; // 필드가 public으로 노출됨
public double y; // 필드가 public으로 노출됨
}
public class Main {
public static void main(String[] args) {
Point point = new Point();
// 외부에서 x와 y 필드에 직접 접근하고 수정할 수 있음
point.x = 5.0;
point.y = 10.0;
System.out.println("X: " + point.x + ", Y: " + point.y);
// 외부에서 필드에 임의로 잘못된 값도 설정 가능
point.x = -999.0; // 이런 잘못된 값이 들어갈 수 있음
System.out.println("X: " + point.x + ", Y: " + point.y);
}
}
2. 접근자와 변경자를 사용하는 캡슐화 방식
3. 패키지 내부나 private 중첩 클래스에서는 필드를 노출해도 괜찮을 때가 있다
왜 이런 상황에서 문제가 없을까?
4. public 클래스의 가변 필드 노출 문제
public 클래스의 가변 필드 노출 문제5. 불변 필드의 경우에도 노출은 피해야 한다
6. 리팩터링된 코드 및 설명
7. 부가적인 예제
✨ 정리
Last updated