자바에서 static이 아닌 메서드를 static 메서드로 오버라이드할 수 있는가?

초월차선·2023년 2월 19일

Java

목록 보기
7/14

불가능하다

이유는 static 메서드와 non-static메서드가 메모리에 올라가는 시점 때문

static 메서드는 컴파일 시점에 메모리에 올라가고,
non-static메서드는 Runtime시점에 메모리에 올라간다. staic으로 선언한 객체들은 compiler가 어떤 메서드를 실행할지 컴파일 시점에 결정되고, non-static 메서드는 런타임 시점에 올라가서, 오버라이드 인스턴스 메서드도 runtime에 어떤 메서드가 실행될지 결정한다. 컴파일 시점이 Runtime시점보다 앞서기 때문에, non-static메서드를 static메서드로 오버라이드 할 수 없다.

0개의 댓글