인프런 커뮤니티 질문&답변

seung lee님의 프로필 이미지

작성한 질문수

Do it! 자바 프로그래밍 입문 with 은종쌤

객체 배열 사용하기(2)

Book 클래스 안에서 bookName과 author를 private으로 선언했는데

22.03.20 21:13 작성

·

158

0

private으로 멤버변수를 선언하고나서

접근할 수 있는 get함수와 set함수 다 만들거면 왜 멤버변수를 private으로 설정하나요?

읽게만 하고싶고 못쓰게 하려면 private으로 변수 제어해놓고 get함수만 만드는건 이해하겠는데

get,set함수 둘다 만들거면 private은 왜 쓰나요? 이유가 궁금합니다.

답변 1

2

고수님의 프로필 이미지

2022. 03. 21. 21:28

예를 들자면, "자동차"라는 클래스에서 "기름" 이라는 변수가 public로 선언 되었을때, 외부에서 값을 넣을 수 있습니다.

현실세계에서 생각해봅시다. 기름을 넣으려고 주유소를 가서 주유를 하는 상황이라고 가정 합시다.

기름 변수에 음수로 넣었다고 가정해보면, 말이 안되잖아요?  차에 기름을 넣었는데 마이너스 만큼 넣을수가 없죠 ..

 근데 public로 선언하면 외부에서 바로 접근이 가능하니, 음수를 넣을 수가 있단 말이죠.

 

이러한 문제를 방지하기 위해 private이 있습니다.

외부에서 이상한 값을 직접 넣지못하게 접근하는것을 막아두고 get,set 메소드를 통해 한번 검증? 호출하는 방식으로, 이해하면 되겠네요

즉, 호출시 set메소드에 음수는 대입할수 없다 라는 제약조건을 걸어서 음수 값을 못넣게 할 수 있습니다.

seung lee님의 프로필 이미지
seung lee
질문자

2022. 03. 22. 10:35

우와 그렇네요 그런 기능을 넣을 수가 있군요! 감사합니다 이해됐습니다