강의

멘토링

커뮤니티

Inflearn Community Q&A

musemy1054's profile image
musemy1054

asked

Introduction to Java Programming Course (renewed version) - From beginner to developer employment!!

Constructors and destructors and the this keyword

데이터은닉- 게터세터

Written on

·

246

0

세터를 이용해서도 정보를 변경시킬수 있다는것은 어쩄든 변경할수 있다는건데 그냥 바꾸는것보다 메서드를 사용해서 하는게 더 안전하다는 것이 이해가 잘 안갑니다. 

세터메서드 안에 뭔가 코드를 추가해서 접근자를 걸러서 한다거나 뭐 그렇게 쓰이게 되는건가요

java

Answer 1

4

예를 들어서 BodyInfo라는 클래스에 몸무게를 weight 나타내는 변수가 있다고 가정합니다.

다른 클래스에서 BodyInfo 라는 클래스를 객체화 하여 weight 에 값을 부여할때,

실수로 -100을 대입하게되면, 데이터의 무결성을 보장할 수 없게 됩니다.

데이터의 무결성을 위해, weight 라는 변수를 private으로 선언하고, 

setter 안에 데이터를 사전에 검증하는 코드를 추가하는 등 위와 같은 실수를 예방할 수 있습니다.

setter에서 데이터 검증을 하지않고, BodyInfo클래스를 사용하는 클래스에서

데이터를 입력받을때 검증할 수 있지 않냐라고 생각하실 수 있는데,

BodyInfo라는 클래스를 사용하는곳이 수백,수천 개일경우 

모든 클래스에서 수정이 이루어져야합니다.

하지만 setter에서 데이터 검증 부분을 수정하게되면, 

BodyInfo 클래스의 setter에 검증부분만 수정하면  모든 클래스에 반영이 되는거죠.

이해하시는데 도움이 되셨으면 좋겠습니다.

musemy1054's profile image
musemy1054

asked

Ask a question