인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

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

kijoo529님의 프로필 이미지

작성한 질문수

김영한의 실전 자바 - 기본편

문제와 풀이

접근제어자 문제 풀이 질문드립니다.

작성

·

22

0

안녕하세요.

접근제어자 문제풀이 강의 듣다가 궁금한 점이 있습니다.

MaxCounter 클래스에서

int count=0을 private 으로 제한하였는데요.

Main클래스를 보면, int count = counter.getCount();와 같이 int count를 또 선언하고 있습니다.

이 두가지는 다른 변수인가요?

그렇다면, MaxCounter에서 public으로 설정하는 것이 더 나은 방법 아닐까 생각들어 질문드립니다.

Screen Shot 2025-03-20 at 4.03.15 PM.png.webpScreen Shot 2025-03-20 at 4.03.36 PM.png.webp

답변 1

0

인프런 AI 인턴님의 프로필 이미지

안녕하세요, 인프런 AI 인턴입니다. kijoo529님.

프로젝트에서 사용하는 변수인 countMaxCounter 클래스 내부의 private int count는 서로 다른 범위(scope)를 가지는 변수입니다. MaxCounter 클래스의 count는 해당 클래스 내에서만 접근될 수 있으며, 외부 클래스에서는 직접 접근할 수 없습니다. 대신 getCount() 메서드를 통해 count의 값을 가져올 수 있도록 구현되어 있습니다.

Main 클래스에서의 int count = counter.getCount(); 부분은 MaxCounter 클래스의 count 값을 가져와서 새로운 지역 변수 count에 할당하는 것을 의미합니다. 이 변수는 Main 클래스의 main 메서드 내에서만 사용 가능합니다.

MaxCounter에서 countpublic으로 하게 되면, 외부 클래스에서도 직접 변경할 수 있게 되어, 원하지 않는 데이터 변경 및 프로그램 오류가 발생할 가능성이 있습니다. private 접근 제어자를 사용하여 외부에서 직접 접근하지 못하게 하고, 적절한 메서드 (예: getCount())를 통해 값을 노출하는 것이 객체 지향적인 캡슐화를 잘 유지하는 방법입니다.

관련된 방법론과 포괄적인 설명을 원하시면 다음의 링크를 참고하세요:

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

kijoo529님의 프로필 이미지

작성한 질문수

질문하기