프로그래밍 언어/JAVA

Java가 정적 메서드 재정의를 허용하지 않는 이유

Rateye 2021. 10. 13. 12:08
728x90
반응형
질문 : Java가 정적 메서드 재정의를 허용하지 않는 이유는 무엇입니까?

정적 메서드를 재정의 할 수없는 이유는 무엇입니까?

가능하면 예를 사용하십시오.

답변

재정의는 클래스의 인스턴스가 있는지에 따라 다릅니다. 다형성의 요점은 클래스를 서브 클래 싱 할 수 있고 이러한 서브 클래스를 구현하는 객체는 수퍼 클래스에 정의 된 (하위 클래스에서 재정의 됨) 동일한 메서드에 대해 다른 동작을 갖게된다는 것입니다. 정적 메서드는 클래스의 인스턴스와 연결되어 있지 않으므로 개념을 적용 할 수 없습니다.

이에 영향을 미치는 Java의 설계를 추진하는 두 가지 고려 사항이 있습니다. 하나는 성능에 대한 우려였습니다. 스몰 토크가 너무 느리다는 비판이 많았고 (가비지 수집과 다형성 호출이 그 일부가 됨) Java 제작자는이를 피하기로 결정했습니다. 또 하나는 Java의 타겟 고객이 C ++ 개발자라는 결정이었습니다. 정적 메서드를 작동하는 방식으로 만들면 C ++ 프로그래머에게 친숙한 이점이 있었고 호출 할 메서드를 파악하기 위해 런타임까지 기다릴 필요가 없기 때문에 매우 빠릅니다.

출처 : https://stackoverflow.com/questions/2223386/why-doesnt-java-allow-overriding-of-static-methods
728x90
반응형