강의

멘토링

커뮤니티

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

s0_8h님의 프로필 이미지
s0_8h

작성한 질문수

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

참조형과 메서드 호출 - 활용

Method1에서 Student 객체

작성

·

16

0

 학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.


1. 강의 내용과 관련된 질문을 남겨주세요.
2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.
(자주 하는 질문 링크: https://bit.ly/3fX6ygx)
3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.
(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)

질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.
=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)

[질문 내용]
여기에 질문 내용을 남겨주세요.

이 부분에서 Student student를 선언하고 new Student();를 안했는데 어떻게 바로 .name같은 거를 사용할 수 있는 건가요? 다른 부분에서는 꼭 객체를 먼저 생성해야 접근을 할 수 있는데 이 함수에서는 왜 가능한건가요?

static void initStudent(Student student, String name, int age, int grade) {
    student.name = name;
    student.age = age;
    student.grade = grade;
}

답변 1

0

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

s0_8h님이 질문하신 내용은 객체의 참조에 관한 것으로 보입니다. Java에서 객체를 생성하지 않고 student라는 참조 변수를 통해 멤버 변수에 접근하는 이유에 대해 궁금해하신 것 같습니다.

이해를 돕기 위한 설명:

  • Java의 객체 참조: Student 객체를 직접 생성하지 않은 경우, initStudent 메서드에 전달된 student 매개변수는 이미 생성된 Student 객체를 참조하고 있어야 합니다. 즉, 메서드 외부에서 Student 객체가 생성되고, 해당 객체의 주소(reference)가 student 변수로 전달된 상태여야 합니다.

  • 객체를 생성하는 예:

    Student student = new Student();
    initStudent(student, "John", 20, 90);
    

    이와 같은 방식으로 Student 객체를 생성한 다음, initStudent 함수 호출 시 student 객체를 매개변수로 전달함으로써, initStudent 내에서 해당 객체의 속성에 접근 가능합니다.

  • 객체 없이 Student의 속성을 사용하고자 할 때: Java에서는 반드시 객체를 생성한 후 그 객체를 통해서 클래스의 멤버에 접근해야 합니다. 객체를 생성하지 않고 해당 속성에 접근하려면 클래스의 멤버가 ‘static’으로 정의되어야 하지만, 질문에서 사용된 name, age, grade와 같은 변수는 인스턴스 변수이므로 객체 생성을 필요로 합니다.

s0_8h님의 이해를 위해 Java에서의 참조 및 객체 초기화 방법을 간략히 설명드렸습니다. 추가적인 이해가 필요하시다면 강의 내용을 다시 확인해 보시거나 Student 객체가 생성되는 맥락을 점검해 보시면 도움이 될 수 있습니다.

질문 내용 관련해서는 다음의 링크를 참고하실 수 있습니다:
- 안녕하세요. 생성자와 관련하여 질문드립니다.

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

s0_8h님의 프로필 이미지
s0_8h

작성한 질문수

질문하기