정적 변수, 정적 메서드(static) v2
안녕하세요.
29:18에 return name; 이 부분에서 오류가 발생한다고 설명해 주셨는데요.
main함수를 보면 static String get() 이 메서드를 호출하지 않게 되어있는거 아닌가요?
obj 객체를 생성하고,
obj.name에 kim을 대입하고,
obj.print()를 통해 Kim을 출력하면 끝나는 코드 같아서요.
main함수에 static 메서드가 인스턴스 변수에 직접 접근하는 플로우가 없어도 저 코드가 존재한다는 것만으로도 오류가 나는건가요?
답변 2
0
안녕하세요,
프로그래밍 오류는 크게 2가지로 나뉩니다.
하나는 컴파일 오류이며, 아예 문법 자체가 문제가 있을 때 실행하기 전에 검사해서 발생하는 오류입니다.
다른 하나는 런타임 오류로, 프로그램이 동작하면서 발생하는 오류입니다. 대표적으로 정해진 메모리 크기보다 더 많은 변수가 들어가거나, 존재하지 않은 메모리를 참조할 때 발생합니다.
정적 메서드가 인스턴스 변수에 접근 자체를 하는 것이 문법적인 오류이기 때문에
실제 코드에서 접근하지 않는다고 하더라도 오류가 발생합니다.
저 코드를 실제로 실행해보시면, 오류가 발생하고 동작하지 않습니다.
0
안녕하세요, 인프런 AI 인턴입니다. 태0님.
Java에서 정적 메서드가 인스턴스 변수에 접근하는 문제에 대해 궁금해 하시는군요. 이 문제는 Java의 메모리 구조와 클래스 정적 및 인스턴스 레벨 간의 관계를 이해하는 데 중요한 부분입니다.
오류 발생 이유: main 함수에서 직접적으로
static String get()메서드를 호출하지 않더라도, Java 컴파일러는 해당 메서드 내의 코드와 관련하여 존재하는 잠재적 문제를 컴파일 시점에 미리 검사합니다. 즉, 코드가 실행되지 않더라도, 정적 메서드get()이 인스턴스 변수name에 접근하려 한다는 잠재적 오류가 있기 때문에 컴파일 에러가 발생합니다.컴파일러의 역할: Java 컴파일러는 실행 여부와 상관없이 코드 오류를 확인하므로, 실질적으로 실행되지 않거나 호출되지 않더라도 코드에 논리적 오류가 있을 경우 이를 감지합니다. 따라서 코드를 작성할 때 정적 메서드가 인스턴스 변수에 접근하지 않도록 주의해야 합니다.
이와 관련한 유사한 질문이나 설명이 포함된 링크를 확인해 보시기 바랍니다:
- Java의 정적 메서드와 인스턴스 변수: 해당 개념에 대한 설명을 확인할 수 있습니다.
- Java에서 static 키워드 사용법: static 메서드와 변수 사용 시 주의점에 대한 정보를 제공합니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
영상 다운로드는 안되나요?
0
20
1
26년2회 실기기출은 언제쯤...
0
63
2
이론 공부법 요약본 버전 업데이트 문의
0
46
2
정처기 필기 준비할때 이 이론을 다시 외워도 될까요?
0
63
2
조건 반복문 질문: for 문 ?
0
66
1
정처기 26-2회. 9번 질문드립니다!
0
88
1
이론 보면서 질문이 있습니다.
0
84
2
정보처리기사 실기 26년 2회 SRT 스케줄링 문제 단위 질문
0
99
2
유튜브(정보처리기사 실기 | 26년 2회 기출문제 코드 해설)
0
157
2
262 정처기 실기 C언어코딩
0
55
1
정보처리기사 262 실기 Hash(해시) 질문
0
88
2
static 변수 질문입니다.
0
67
2
파이썬 4강 질문입니다.
0
75
2
모의고사 1회 3번문제
0
99
3
41강 30:10
0
70
2
이론 공부법 질문 있습니다.
0
98
2
부모의 생성자 관련 질문
0
72
2
시험지 문제에 필기해도 되나요?
0
96
3
41강 11:23
0
63
2
4강파이썬 질문입니다
0
60
2
try-catch 핸들러명
0
73
2
36강 3:48
0
71
2
35강 18:27
0
71
2
자식 코드 내 super() 생략
0
65
2





