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

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

kijoo529님의 프로필 이미지

작성한 질문수

그림으로 배우는 자바, 파트2: 객체지향!

클래스 변수와 클래스 메소드

객체지향 Java 파트2 붕어빵 문제 질문 있습니다.

작성

·

32

·

수정됨

0

안녕하세요. 강의를 들으며 따라 코딩작성을 해보다가 실행에 문제가 생겨 질문 드립니다.

[클래스 변수와 클래스 메소드] 파트

붕어빵 문제입니다.

 

Screen Shot 2025-03-10 at 4.18.37 AM.png.webp

질문1> 16번째줄에 for문 안에 i<FishBread.count의 조건이 적혀있는데요. 제 생각엔 i<breads.length로 적어야 맞지 않나 싶은 생각이 드는데, 왜 i<FishBread.count인지 설명 부탁드립니다.

 

질문2> 22번째 줄에, fishBread.count 부분을 그냥 count로 적는것은 불가능한지? 설명 부탁드립니다.

 

Screen Shot 2025-03-10 at 4.19.03 AM.png.webp

질문3> 35번째줄, 생성자 앞에 Public을 적으니 10~13번째 줄들이 전부 빨간 밑줄이 쳐집니다. (생성자 앞의 public을 지우면, 10~13번째줄 빨간밑줄이 사라집니다) 빨간 밑줄이 쳐지는것으로 보아, 문제가 있는 것으로 생각되는데, public을 함께 적는 이유가 무엇인지 궁금합니다.

 

질문4> 40번째줄, FishBread.count++;을 단순히 count++;로 적으면 안되는 것인가요?

 

질문5> 45번재줄, 프린트문 내부의 contents는 왜 FishBread.countents가 아닌것인가요?

답변 2

0

홍팍님의 프로필 이미지
홍팍
지식공유자

AI 인턴이 저 대신 잘 답변해주었네요 👍

추가 질문이 있다면 남겨주세요

감사합니다

0

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

안녕하세요, 인프런 AI 인턴입니다. kijoo529님이 제기하신 질문들에 대해 기존의 유사한 질문과 답변을 바탕으로 설명드리겠습니다.

질문1: for문에서 i < FishBread.count 대신 i < breads.length를 써야 하는지

  • FishBread.count는 생성된 붕어빵 객체의 전체 개수를 나타내는 정적 변수입니다. 즉, 현재 생성된 모든 붕어빵의 수를 가지고 있습니다. breads.length는 배열의 크기를 나타내지만, 꼭 모든 배열이 채워졌다는 것을 보장하진 않습니다. 특정 조건에서 붕어빵 객체가 모두 채워져 생성된 상태를 이용하고 싶다면 FishBread.count를 사용하는 것이 맞습니다.

관련 질문 예시: 객체 배열과 반복문 강의 중

강의에서는 객체 배열을 활용하고, 배열의 실제 사용된 객체 수와 배열 크기 간의 차이를 설명합니다.

질문2: FishBread.count를 그냥 count로 사용할 수 없는 이유

  • countstatic으로 선언된 정적 변수이기 때문에, 클래스명을 추가하여 FishBread.count로 접근해야 합니다. 특정 인스턴스의 변수로 접근하려면 해당 인스턴스가 필요하기 때문에, 해당 변수가 클래스 레벨에서 공통되는 값이라면 클래스명으로 직접 접근해야 합니다.

질문3: 생성자 앞의 public 표기와 관련된 문제

  • 생성자를 public으로 선언하면 외부에서 객체 생성이 가능합니다. public 키워드 추가로 빨간 밑줄이 나오는 이유는 아마도 public 대신 초기 문자의 오타 때문일 수 있습니다. 만약 접근 제어자가 잘못되었다면 접근성의 문제가 생기며, 이를 해결하기 위해 접근 수준을 명확히 해야 합니다.

질문4: FishBread.count++; 대신 count++;가 안 되는 이유

  • 앞서 설명한 것처럼, count는 정적 변수입니다. 클래스를 통해 접근해야 하기 때문에 FishBread.count++;로 참조해야 합니다.

질문5: contents는 왜 FishBread.contents가 아닌 것인가요?

  • contents는 개별 FishBread 객체의 인스턴스 변수입니다. 따라서 클래스 인스턴스에 종속적인 변수이므로, 각 객체 간 값을 공유하지 않습니다. 인스턴스를 통해 접근해야 하기 때문에 FishBread.contents처럼 클래스명을 사용할 수 없습니다.

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

kijoo529님의 프로필 이미지

작성한 질문수

질문하기