데이터은닉- 게터세터
예를 들어서 BodyInfo라는 클래스에 몸무게를 weight 나타내는 변수가 있다고 가정합니다. 다른 클래스에서 BodyInfo 라는 클래스를 객체화 하여 weight 에 값을 부여할때, 실수로 -100을 대입하게되면, 데이터의 무결성을 보장할 수 없게 됩니다. 데이터의 무결성을 위해, weight 라는 변수를 private으로 선언하고, setter 안에 데이터를 사전에 검증하는 코드를 추가하는 등 위와 같은 실수를 예방할 수 있습니다. setter에서 데이터 검증을 하지않고, BodyInfo클래스를 사용하는 클래스에서 데이터를 입력받을때 검증할 수 있지 않냐라고 생각하실 수 있는데, BodyInfo라는 클래스를 사용하는곳이 수백,수천 개일경우 모든 클래스에서 수정이 이루어져야합니다. 하지만 setter에서 데이터 검증 부분을 수정하게되면, BodyInfo 클래스의 setter에 검증부분만 수정하면 모든 클래스에 반영이 되는거죠. 이해하시는데 도움이 되셨으면 좋겠습니다.