• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    미해결

static 메서드 또는 변수에 접근

22.07.08 16:15 작성 조회수 179

0

Main 메서드에 knight = Knight.CreateKnight( )로 접근이 가능한 이유가 CreateKnight( ) 메서드가 Compiler에 의해서 프로그램이 실행될 때 static으로 선언되어 있으니깐 Data 메모리 영역에 할당되어 사용자가 Knight에 대한 클래스를 객체화 시키지 않고 knight = Knight.CreateKnight( ) 바로 접근이 가능하다?

하지만 knight.Move( ) 메서드는 static을 사용하지 않고 Knight에 종속된 메서드로  Knight를 객체화 시켜야만 Knight 필드 메서드와 필드 변수를 Heap 메모리 영역에 할당이 되어 knight.Move( )에 접근이 가능하다?

라는 해석으로 제가 생각 했는데 이 해석이 맞는 건가요? 너무 복잡하게 생각하고 있는거 같습니다..

답변 1

답변을 작성해보세요.

1

Main 메서드에 knight = Knight.CreateKnight( )로 접근이 가능한 이유가 CreateKnight( ) 메서드가 Compiler에 의해서 프로그램이 실행될 때 static으로 선언되어 있으니깐 Data 메모리 영역에 할당되어 사용자가 Knight에 대한 클래스를 객체화 시키지 않고 knight = Knight.CreateKnight( ) 바로 접근이 가능하다?

Knight.CreateKnight()을 한다고 객체화시키지 않는 것이 아니라,
CreateKnight 내부에서 new Knight을 해서 객체화를 해주고 있습니다.
새로 생성된 객체는 당연히 Heap에 올라가겠죠.