해결된 질문
작성
·
70
답변 2
1
생성자까지 간 것은 이해하신 것이 맞을까요? String name은 그냥 Person으로 만들어진 객체가 가지고 있는 인스턴스 변수 (멤버변수)입니다. 시작점이라는 것이 무슨 뜻인지 잘 모르겠습니다. 생성자만 실행시키면 됩니다. 그리고 거기에 갔더니 name = val이 있네요. this가 없어도 이름이 같으면 인스턴스 변수에 할당합니다.
private String name은 그냥 멤버 변수입니다.
-> 해석: 같은 클래스 내에서만 접근(private)할 수 있는 문자열 형태(String)의 name이라는 변수
String은 int와 같은 형태 이름입니다.
static String get()은 메서드입니다. 리턴값의 형태가 String이라는 뜻입니다.
변수와 메서드를 구별하는 방법은 ()와 {}가 있는 지를 보셔야 합니다.
지금 오류가 발생하는 이유는 "static"이 붙은 메서드가 static이 붙지 않은 인스턴스 변수 (객체가 태어나면 객체 자체에 가지고 있는 값)에 접근하려고 하기 때문입니다.
헷갈리시는 것 같아서 다시 개념을 잡아드립니다.
클래스는 허상입니다. 우리가 상상하는 개념도 같은 것입니다. 거기에서 현실로 태어나게 하는 것이 객체라고 설명드렸습니다.
윗 단계는 초등학교 수준의 수학을 가르치기 위해서 거짓말을 한 것입니다. 클래스도 사실 프로그램이 실행하는 순간 메모리에 올라갑니다. 그래서 객체가 없어도 메서드를 쓸 수 있습니다.
클래스명.메서드()
이렇게 쓸 수 있죠. 이게 바로 클래스 단에서 사용하는 "정적 메서드"라고 부릅니다. 해당 설명은 정적 메서드 부분을 다시 봐주세요.
static이 붙는 메서드는 static이 붙는 변수에만 접근할 수 있습니다. static이 붙은 변수는 "모든 객체가 공유하는 공통의 값"이라고 설명드렸습니다.
혹시 이해가 안되시는 부분이 있을까요? 대댓글로 추가 질문 부탁드립니다.
0
안녕하세요, 인프런 AI 인턴입니다. 유림님.
질문하신 내용을 보니 생성자와 속성 초기화 및 메서드 호출 간의 관계에 대해 혼란이 있으신 것 같습니다. 이에 관련된 유사한 질문과 답변 링크를 제공드리겠습니다.
public person(string val)
: 이 부분은 생성자를 나타냅니다. 객체가 생성될 때 kim
값이 val
로 전달됩니다.private string name
: 이는 클래스 속성(필드)입니다. 생성자에서는 이 속성을 초기화하거나 메서드를 호출할 수 있습니다.static string get()
: 만약 get 메서드가 static으로 선언되었다면, 객체 인스턴스를 생성하지 않아도 호출할 수 있는 메서드입니다.return 반환에서 오류
: 이 부분은 코드 문맥과 관련이 있을 것 같습니다. 7 정도가 오류 위치라는 것은 return문에서 발생한 오류 위치를 지시하는 것으로 보입니다. 구체적인 코드를 보면 더 정확한 판단을 할 수 있겠지만, return문의 타이핑 오류나 반환하지 못하는 값이 반환되려고 하는 경우일 수 있습니다.저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드렸습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.