1. public
필드를 그대로 사용할 때의 문제점
public
필드를 외부에서 직접 접근할 수 있게 하면, 클래스를 사용하는 모든 코드에서 해당 필드에 의존하게 되어, 그 필드의 구조나 이름을 바꾸기 어렵게 된다.public
으로 두면 외부에서 값을 수정할 수 있어 데이터의 일관성을 유지하기가 어려움2. 해결책: 필드는 private
으로 두고 getter
를 사용
private
으로 선언하고, getter
메서드를 통해 간접적으로 접근하게 만드는 것이 좋다.getter
메서드에서는 필드의 값을 제공하면서, 필요한 부수 작업을 추가하거나, 추후 내부 구조를 변경할 여지도 남길 수 있다.3. 불변 필드라면 공개해도 괜찮지만 주의가 필요
public
으로 노출되는 필드가 불변(fianl)
이라면 상대적으로 안전하다. 그래도 완전한 안전을 보장하는 것은 아니므로 되도록 권장되지 않는다.4. 예외: package-private 클래스나 private 중첩 클래스
package-private
클래스나 private
중첩 클래스에서만 사용할 때는 필요한 경우 public
필드를 사용할 수 있다.