작성
·
32
·
수정됨
0
안녕하세요. 강의를 들으며 따라 코딩작성을 해보다가 실행에 문제가 생겨 질문 드립니다.
[클래스 변수와 클래스 메소드] 파트
붕어빵 문제입니다.
질문1> 16번째줄에 for문 안에 i<FishBread.count의 조건이 적혀있는데요. 제 생각엔 i<breads.length로 적어야 맞지 않나 싶은 생각이 드는데, 왜 i<FishBread.count인지 설명 부탁드립니다.
질문2> 22번째 줄에, fishBread.count 부분을 그냥 count로 적는것은 불가능한지? 설명 부탁드립니다.
질문3> 35번째줄, 생성자 앞에 Public을 적으니 10~13번째 줄들이 전부 빨간 밑줄이 쳐집니다. (생성자 앞의 public을 지우면, 10~13번째줄 빨간밑줄이 사라집니다) 빨간 밑줄이 쳐지는것으로 보아, 문제가 있는 것으로 생각되는데, public을 함께 적는 이유가 무엇인지 궁금합니다.
질문4> 40번째줄, FishBread.count++;을 단순히 count++;로 적으면 안되는 것인가요?
질문5> 45번재줄, 프린트문 내부의 contents는 왜 FishBread.countents가 아닌것인가요?
답변 2
0
0
안녕하세요, 인프런 AI 인턴입니다. kijoo529님이 제기하신 질문들에 대해 기존의 유사한 질문과 답변을 바탕으로 설명드리겠습니다.
i < FishBread.count
대신 i < breads.length
를 써야 하는지FishBread.count
는 생성된 붕어빵 객체의 전체 개수를 나타내는 정적 변수입니다. 즉, 현재 생성된 모든 붕어빵의 수를 가지고 있습니다. breads.length
는 배열의 크기를 나타내지만, 꼭 모든 배열이 채워졌다는 것을 보장하진 않습니다. 특정 조건에서 붕어빵 객체가 모두 채워져 생성된 상태를 이용하고 싶다면 FishBread.count
를 사용하는 것이 맞습니다.관련 질문 예시: 객체 배열과 반복문 강의 중
강의에서는 객체 배열을 활용하고, 배열의 실제 사용된 객체 수와 배열 크기 간의 차이를 설명합니다.
FishBread.count
를 그냥 count
로 사용할 수 없는 이유count
는 static
으로 선언된 정적 변수이기 때문에, 클래스명을 추가하여 FishBread.count
로 접근해야 합니다. 특정 인스턴스의 변수로 접근하려면 해당 인스턴스가 필요하기 때문에, 해당 변수가 클래스 레벨에서 공통되는 값이라면 클래스명으로 직접 접근해야 합니다.public
표기와 관련된 문제public
으로 선언하면 외부에서 객체 생성이 가능합니다. public
키워드 추가로 빨간 밑줄이 나오는 이유는 아마도 public
대신 초기 문자의 오타 때문일 수 있습니다. 만약 접근 제어자가 잘못되었다면 접근성의 문제가 생기며, 이를 해결하기 위해 접근 수준을 명확히 해야 합니다.FishBread.count++;
대신 count++;
가 안 되는 이유count
는 정적 변수입니다. 클래스를 통해 접근해야 하기 때문에 FishBread.count++;
로 참조해야 합니다.contents
는 왜 FishBread.contents
가 아닌 것인가요?contents
는 개별 FishBread
객체의 인스턴스 변수입니다. 따라서 클래스 인스턴스에 종속적인 변수이므로, 각 객체 간 값을 공유하지 않습니다. 인스턴스를 통해 접근해야 하기 때문에 FishBread.contents
처럼 클래스명을 사용할 수 없습니다.저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.