오버로딩 | 오버라이딩 | |
---|---|---|
메소드 이름 | 동일 | 동일 |
매개변수, 타입 | 다름 | 동일 |
리턴 타입 | 상관 없음 | 동일 |
메소드 결정시점 | 컴파일 | 런타임 |
※ 소스 코드를 기계 코드로 변환하는 기간을 컴파일 시간이라고합니다. 구문 분석, 의미 분석 및 코드 생성과 같은 작업은 컴파일 타임에 발생합니다. 컴파일 타임에 생성 된 실행 파일을 실행하는 기간을 런타임이라고합니다.
JVM 이 메서드를 호출할 때, instance method 의 경우 런타임 시 해당 메서드를 구현하고 있는 실제 객체를 찾아 호출한다. (다형성) 하지만 컴파일러와 JVM 모두 static 메서드에 대해서는 실제 객체를 찾는 작업을 시행하지 않기 때문에 class method(static method)의 경우, 컴파일 시점에 선언된 타입의 메서드를 호출한다. 그래서 static 메소드에서는 다형성이 적용되지 않습니다.
그리고 애초에 static에 경우 클래스단위로 만들어지기 때문에 객체 단위로 형성되는 Override 성립될 수 없다.
https://sungman.tistory.com/m/9
https://minni7.tistory.com/m/32
https://hsik0225.github.io/java/2020/12/17/Static-Override/
https://wedul.site/457