Written on
·
263
0
Main 메서드에 knight = Knight.CreateKnight( )로 접근이 가능한 이유가 CreateKnight( ) 메서드가 Compiler에 의해서 프로그램이 실행될 때 static으로 선언되어 있으니깐 Data 메모리 영역에 할당되어 사용자가 Knight에 대한 클래스를 객체화 시키지 않고 knight = Knight.CreateKnight( ) 바로 접근이 가능하다?
하지만 knight.Move( ) 메서드는 static을 사용하지 않고 Knight에 종속된 메서드로 Knight를 객체화 시켜야만 Knight 필드 메서드와 필드 변수를 Heap 메모리 영역에 할당이 되어 knight.Move( )에 접근이 가능하다?
라는 해석으로 제가 생각 했는데 이 해석이 맞는 건가요? 너무 복잡하게 생각하고 있는거 같습니다..
Answer 1
1
Main 메서드에 knight = Knight.CreateKnight( )로 접근이 가능한 이유가 CreateKnight( ) 메서드가 Compiler에 의해서 프로그램이 실행될 때 static으로 선언되어 있으니깐 Data 메모리 영역에 할당되어 사용자가 Knight에 대한 클래스를 객체화 시키지 않고 knight = Knight.CreateKnight( ) 바로 접근이 가능하다?
Knight.CreateKnight()을 한다고 객체화시키지 않는 것이 아니라,
CreateKnight 내부에서 new Knight을 해서 객체화를 해주고 있습니다.
새로 생성된 객체는 당연히 Heap에 올라가겠죠.