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

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

유림님의 프로필 이미지
유림

작성한 질문수

(2025) 일주일만에 합격하는 정보처리기사 실기

(기출) 2023년 3회 코드해석 문제

2023 2회 20분 문제

해결된 질문

작성

·

74

0

2023 2회 20분경 문제 오류 찾기요

kim을 넣어서 public person(string val)으로 간다까진 이해했는데요. 거기로 가면 public person(string val)부터 시작이 아니라 위인 private string name부터 시작인가요?

그래서 private string name은 static string get()을 부르는 함수인가요????ㅠㅠㅠ연결 고리를 모르겟어요

 

그리고 return 반환에서 오류가 나서 7 정도가 오류 위치라고 하신건가요?

답변 2

1

주말코딩님의 프로필 이미지
주말코딩
지식공유자

  1. 생성자까지 간 것은 이해하신 것이 맞을까요? String name은 그냥 Person으로 만들어진 객체가 가지고 있는 인스턴스 변수 (멤버변수)입니다. 시작점이라는 것이 무슨 뜻인지 잘 모르겠습니다. 생성자만 실행시키면 됩니다. 그리고 거기에 갔더니 name = val이 있네요. this가 없어도 이름이 같으면 인스턴스 변수에 할당합니다.

     

     

     

  2. private String name은 그냥 멤버 변수입니다.

     

    -> 해석: 같은 클래스 내에서만 접근(private)할 수 있는 문자열 형태(String)의 name이라는 변수

String은 int와 같은 형태 이름입니다.

 

static String get()은 메서드입니다. 리턴값의 형태가 String이라는 뜻입니다.

변수와 메서드를 구별하는 방법은 ()와 {}가 있는 지를 보셔야 합니다.

지금 오류가 발생하는 이유는 "static"이 붙은 메서드가 static이 붙지 않은 인스턴스 변수 (객체가 태어나면 객체 자체에 가지고 있는 값)에 접근하려고 하기 때문입니다.

 


 

헷갈리시는 것 같아서 다시 개념을 잡아드립니다.

클래스는 허상입니다. 우리가 상상하는 개념도 같은 것입니다. 거기에서 현실로 태어나게 하는 것이 객체라고 설명드렸습니다.

윗 단계는 초등학교 수준의 수학을 가르치기 위해서 거짓말을 한 것입니다. 클래스도 사실 프로그램이 실행하는 순간 메모리에 올라갑니다. 그래서 객체가 없어도 메서드를 쓸 수 있습니다.

클래스명.메서드() 이렇게 쓸 수 있죠. 이게 바로 클래스 단에서 사용하는 "정적 메서드"라고 부릅니다. 해당 설명은 정적 메서드 부분을 다시 봐주세요.

static이 붙는 메서드는 static이 붙는 변수에만 접근할 수 있습니다. static이 붙은 변수는 "모든 객체가 공유하는 공통의 값"이라고 설명드렸습니다.

 

혹시 이해가 안되시는 부분이 있을까요? 대댓글로 추가 질문 부탁드립니다.

 

 

0

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

질문하신 내용을 보니 생성자와 속성 초기화 및 메서드 호출 간의 관계에 대해 혼란이 있으신 것 같습니다. 이에 관련된 유사한 질문과 답변 링크를 제공드리겠습니다.

관련 유사 질문과 답변

  1. 30분 String val

    • 이 질문에서 생성자와 메서드 호출의 차이점에 대해 상세히 설명되었습니다. 객체 생성 시 생성자가 호출되고, 메서드는 객체가 생성된 후에 별도로 호출된다는 점이 중요합니다.
  2. 23년 1회 30분 자바 상속문제

    • 이 질문에서는 상속과 관련된 생성자 호출 및 속성 초기화에 관한 내용이 다루어졌습니다. 생성자 내에서 속성 초기화 및 상위 클래스(super)의 동작 방식에 대해 참고해 보세요.

간단한 요약 설명

  • public person(string val): 이 부분은 생성자를 나타냅니다. 객체가 생성될 때 kim 값이 val로 전달됩니다.
  • private string name: 이는 클래스 속성(필드)입니다. 생성자에서는 이 속성을 초기화하거나 메서드를 호출할 수 있습니다.
  • static string get(): 만약 get 메서드가 static으로 선언되었다면, 객체 인스턴스를 생성하지 않아도 호출할 수 있는 메서드입니다.
  • return 반환에서 오류: 이 부분은 코드 문맥과 관련이 있을 것 같습니다. 7 정도가 오류 위치라는 것은 return문에서 발생한 오류 위치를 지시하는 것으로 보입니다. 구체적인 코드를 보면 더 정확한 판단을 할 수 있겠지만, return문의 타이핑 오류나 반환하지 못하는 값이 반환되려고 하는 경우일 수 있습니다.

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

유림님의 프로필 이미지
유림

작성한 질문수

질문하기