정보 은닉을 위해 객체의 멤버를 private로 접근을 제한하고 getter/setter를 이용하여 멤버에 접근하라고 배웠고, 많은 글에서 이렇게 사용하라 말한다. 사실 아 ’그렇구나, 외부에서 필드에 바로 접근을 해버리면 좋지 않구나‘ 하고 넘어갔었다. 이펙티브 자바라는 책을 읽으며 이에 대해 한 번 더 생각해보게 되었다. 접근자 메서드를 왜 사용해야할까? 그저 정보은닉을 지키기 위해? 나는 개발자의 의도 내에서만 필드에 접근할 수 있도록 하기 위해라고 생각한다. 외부에 필드의 직접적인 접근을 제한하고 개발자의 의도 내에서만 접근하면 어떤 점이 좋을까? 멤버의 타입을 바꿀 수 있다. 잉? 그냥 바꾸면 되는 거 아니여? 라는 생각은 아주 큰일 날 생각이다. 우리는 객체를 사용하는 사용자들을 생각해야한다...