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

alstjs님의 프로필 이미지
alstjs

작성한 질문수

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

접근 제어자 이해2

생성자 호출 시 볼륨이 100을 초과하는 경우

작성

·

186

0

[질문 내용]

생성자에서는 100초과의 경우를 따로 생각하지 않은 것으로 보입니다. 그렇다면 생성자를 호출할 때 파라미터로 200을 넣는 경우는 방지할 수 없는데요. (아직 다음 강의를 수강하지 않은 상태입니다. 혹시 해결 방법이 다음 강의에 있다면 알려주세요!)

이런 경우 저는 다음과 같이 제어하는 방향을 생각했습니다.

public Speaker(int volume){
 if(volume > 100){ 
// 100을 초과할 수 없다고 경고하기 
// volume을 최대 음량인 100으로 설정하기
 System.out.println("음량은 최대 100을 넘길 수 없습니다.") 
 System.out.println("음량을 최대 음량인 100으로 설정합니다.") 
 this.volume = volume; 
} else{ this.volume = volume; } 

 

혹시 현업에서는 어떤 방식으로 이를 제어하는지 궁금합니다.

 

답변 2

0

안녕하세요. alstjs님, 공식 서포터즈 David입니다.

보통, 값이 생성되어야 하는 범위를 벗어나면 예외를 발생시킵니다:)

감사합니다.

0

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

alstjs님의 질문은 생성자에서 특정 값의 범위를 제한하는 방법에 관한 것으로 이해됩니다. 이와 관련하여, 이미 유사한 상황에 대한 질문이 있었고, 해당 질문에서는 Speaker 클래스에서 볼륨을 제어하는 예제를 통해 privat(아마도 private의 오타) 접근 제한자를 사용하여 외부에서의 볼륨 조절을 막는 케이스를 다루었습니다. 특히, 볼륨 값을 제한하는 방법에 관한 질문이었고, 이에 대한 답변에서는 생성자 내에서 볼륨 값을 체크하는 로직을 설명하는 방법을 제시했습니다.

현재 질문하신 내용과 유사한 상황을 설명하는 기존 답변입니다:

  • 접근제어자에서는 볼륨 값의 제한을 생성자 내에서 로직을 추가하여 제어하는 방안을 고려하고 있습니다. 이를 통해 볼륨이 특정 값(예: 100)을 초과할 경우에 대한 처리 방법을 설명합니다. 본질적으로 알고 싶은 내용인 생성자를 통한 값 제어 방법이 이곳에서 다루어지고 있어, 답변이 도움이 될 것입니다.

이러한 접근 방식은 입력 값이 특정 범위 (예: 0에서 100까지) 안에 있도록 강제하는 일반적인 방법 중 하나입니다. 현업에서는 이와 유사한 방식으로 파라미터 값들의 유효성을 검증하고, 불가피하게 범위를 벗어나는 경우에는 해당 값들을 적절한 범위 내로 조정하는 등의 처리를 합니다.

질문자님이 고민하신 방향도 매우 합리적이며, 이런 식으로 값을 제어함으로써 객체의 상태가 일관성을 유지하도록 하는 것은 객체 지향 프로그래밍에서 중요한 원칙 중 하나입니다.

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

alstjs님의 프로필 이미지
alstjs

작성한 질문수

질문하기