😒 저 저 저 개념없는 나/🤝🏻 자바를 JAVA

[JAVA/Static] 자바 코드 실행 에러

우주수첩 2024. 4. 26. 16:57
728x90

정처기 시험 공부를 하고 있는데 

 

거지같은 걸 발견 했다. 

 

class Person{
	pricate String name;
    public Person(String val){
    	name = val;
    }
    public static String get(){
	return name;
    }
    public void print(){
    	System.out.prinln(name);
    }
    
public class main{
	public static void main(String[] args){
    Person obj = new Person("Kim");
    obj.print();
    }
}

 

위의 코드가 실행 될 경우 에러가 발생하는 라인이 어디라고 생각하십니까

 

 

이 얄팍하고 같잖은 지식을 가진 주인장은

 

정적메소드인 get()이 개인 인스턴스 변수인 name에 접근하려고 하는 것을 보고 

 

오메오메 하면서 당연히 6번째 코드라고 당당히 답을 적었는데 말입니다.

 

 

7번째입니다 ㅇㅅㅇ..

 

근데 맞긴해요 당연하지 내가 틀렸으니까

 

 

풀이를 적어보자면

 

1. Person 클래스의 get 메소드는 public static으로 선언되어있다.

   => 이는 Person객체를 만들지 않고도 호출할 수 있는 정적 메소드를 의미

2. 해당 메소드는 개인 인스턴스 변수인 name에 접근하고자 한다.

   => 인스턴스 변수는 클래스로부터 생성된 각 객체에 고유하며 정적 메소드는 이런 변수에 직접 접근할 수 없다.

3. 결론적으로 6라인의 static 때문에 에러가 발생하는 것은 맞으나 클래스 내의 정적 메소드 구현은 문제가 없기 때문에 정상적으로 실행이 된다. 메소드 구현 후 name변수를 호출 할 때 에러가 발생하므로 7번 라인이 에러가 발생하는 라인이라고 봐야 한다.

 

 

 

그냥 머리가 뎅뎅거려서 기록을 남깁니다 ㅇㅅㅇ....

728x90