데이터은닉- 게터세터
256
작성한 질문수 3
세터를 이용해서도 정보를 변경시킬수 있다는것은 어쩄든 변경할수 있다는건데 그냥 바꾸는것보다 메서드를 사용해서 하는게 더 안전하다는 것이 이해가 잘 안갑니다.
세터메서드 안에 뭔가 코드를 추가해서 접근자를 걸러서 한다거나 뭐 그렇게 쓰이게 되는건가요
답변 1
4
예를 들어서 BodyInfo라는 클래스에 몸무게를 weight 나타내는 변수가 있다고 가정합니다.
다른 클래스에서 BodyInfo 라는 클래스를 객체화 하여 weight 에 값을 부여할때,
실수로 -100을 대입하게되면, 데이터의 무결성을 보장할 수 없게 됩니다.
데이터의 무결성을 위해, weight 라는 변수를 private으로 선언하고,
setter 안에 데이터를 사전에 검증하는 코드를 추가하는 등 위와 같은 실수를 예방할 수 있습니다.
setter에서 데이터 검증을 하지않고, BodyInfo클래스를 사용하는 클래스에서
데이터를 입력받을때 검증할 수 있지 않냐라고 생각하실 수 있는데,
BodyInfo라는 클래스를 사용하는곳이 수백,수천 개일경우
모든 클래스에서 수정이 이루어져야합니다.
하지만 setter에서 데이터 검증 부분을 수정하게되면,
BodyInfo 클래스의 setter에 검증부분만 수정하면 모든 클래스에 반영이 되는거죠.
이해하시는데 도움이 되셨으면 좋겠습니다.
서식 문자 실습 중 콘솔 결과값 글자 깨짐
0
556
1
19-4 : super 클래스 부분에서
0
379
1
비트를 뒤에서부터 읽으셔서 궁금해서 질문드립니다!
1
650
1
배열예제 오류
0
389
1
GC 동작시기가 궁금합니다.
0
374
0
자바 18버전으로 다운받아도 되나요?
0
533
1
클래스 생성과 관련하여 질문 있습니다
0
265
0
형변환시 신규 메모리가 할당 되는지
0
349
0
Socket을 null로 처음에 선언해주는 이유가 뭘까요?
0
302
0
반환값 용도
0
338
1
블로그 작성
0
316
0
삼항연산자 잘못 적으셨어요
0
265
1
어느것부터 다운로드를 해야하는지 좀 막히네요
0
352
1
inputStream.read()질문드립니다
0
325
1
System.out.println("i + j = " + (i+j); 이렇게 쓰는 이유가 뭔가요? " "i + j " = (i +j)라고 쓸수 있는거 아닌가요?
0
367
1
<for문> 예시 작성시 에러발생 질문드립니다
0
577
2
이해가 안가는 부분이 있습니다.. 선생님들.. 도와주세요..!!
0
314
1
인터페이스를 사용 하는 이유가 무엇인가요?..
0
737
1
혹시 영상 만드시고 업로드 전 확인 안하시나요..? 잡음..
1
304
1
이해가 안가는게 있습니다
0
310
2
jdk-16.0.1은 jre가 없이 jdk만 설치되는게 정상인가요?
0
498
1
메모장을 실행하실때
0
313
1
강의 중 말씀해주신 형변환된 코드가 알고 싶어요.
0
231
2
메모장이안돼요 처음에
0
277
0





