강의

멘토링

로드맵

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

태0님의 프로필 이미지
태0

작성한 질문수

(2026 최신!) 일주일만에 합격하는 정보처리기사 실기

정적 변수, 정적 메서드 (static) v2

정적 변수, 정적 메서드(static) v2

작성

·

20

0

안녕하세요.

29:18에 return name; 이 부분에서 오류가 발생한다고 설명해 주셨는데요.

main함수를 보면 static String get() 이 메서드를 호출하지 않게 되어있는거 아닌가요?

obj 객체를 생성하고,
obj.name에 kim을 대입하고,
obj.print()를 통해 Kim을 출력하면 끝나는 코드 같아서요.

main함수에 static 메서드가 인스턴스 변수에 직접 접근하는 플로우가 없어도 저 코드가 존재한다는 것만으로도 오류가 나는건가요?

퀴즈

클래스는 무엇으로 가장 잘 설명될까요?

실행 가능한 코드의 묶음

데이터를 저장하는 공간

객체를 만들기 위한 설계도 또는 틀

프로그램의 시작점

답변 1

0

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

Java에서 정적 메서드가 인스턴스 변수에 접근하는 문제에 대해 궁금해 하시는군요. 이 문제는 Java의 메모리 구조와 클래스 정적 및 인스턴스 레벨 간의 관계를 이해하는 데 중요한 부분입니다.

  1. 오류 발생 이유: main 함수에서 직접적으로 static String get() 메서드를 호출하지 않더라도, Java 컴파일러는 해당 메서드 내의 코드와 관련하여 존재하는 잠재적 문제를 컴파일 시점에 미리 검사합니다. 즉, 코드가 실행되지 않더라도, 정적 메서드 get()이 인스턴스 변수 name에 접근하려 한다는 잠재적 오류가 있기 때문에 컴파일 에러가 발생합니다.

  2. 컴파일러의 역할: Java 컴파일러는 실행 여부와 상관없이 코드 오류를 확인하므로, 실질적으로 실행되지 않거나 호출되지 않더라도 코드에 논리적 오류가 있을 경우 이를 감지합니다. 따라서 코드를 작성할 때 정적 메서드가 인스턴스 변수에 접근하지 않도록 주의해야 합니다.

이와 관련한 유사한 질문이나 설명이 포함된 링크를 확인해 보시기 바랍니다:

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

태0님의 프로필 이미지
태0

작성한 질문수

질문하기