>Java >java지도 시간 >정적 메소드는 실제로 Java에서 상속됩니까?

정적 메소드는 실제로 Java에서 상속됩니까?

Barbara Streisand
Barbara Streisand원래의
2024-12-12 11:30:13980검색

Do Static Methods Actually Inherit in Java?

Java 상속의 정적 메서드

Java에서는 정적 메서드가 상속되지 않는다는 일반적인 이해에도 불구하고 수수께끼의 예외가 존재합니다. 혼란은 Java 언어의 상속 특성에 대한 오해에서 비롯됩니다.

공식 Java 문서에 따르면 모든 액세스 가능한 메소드는 서브클래스에 상속됩니다. 여기에는 공용, 보호 및 패키지 전용 메서드가 포함됩니다. 상속된 메서드는 그대로 사용하거나 재정의하거나 숨기거나 새 메서드로 보완할 수 있습니다.

정적 메서드의 경우 상속 동작은 하위 클래스에서 재정의된 정적 메서드가 상속된 메서드를 숨긴다는 점에서만 다릅니다. 재정의하는 대신 메서드를 사용하세요. 하위 클래스에서 호출되면 상속된 메서드 대신 하위 클래스의 숨겨진 메서드가 실행됩니다.

따라서 클래스 B의 정적 메서드인 display()에 액세스하고 호출할 수 있는 능력은 메소드는 슈퍼클래스의 액세스 가능한 다른 멤버와 함께 상속됩니다. B.display()의 이상해 보이는 동작도 상속된 메서드가 아닌 클래스 B의 숨겨진 정적 메서드를 호출하기 때문에 작동합니다.

이러한 재정의와 숨김의 구분은 중요한 의미를 갖습니다. 재정의의 경우 하위 클래스의 메서드는 상위 클래스 또는 하위 클래스에서 호출되는지 여부에 관계없이 항상 실행됩니다. 그러나 숨김의 경우 호출되는 메서드는 컨텍스트에 따라 다릅니다. 슈퍼클래스에서 정적 메서드가 호출되면 상속된 메서드가 실행됩니다. 그렇지 않으면 하위 클래스의 숨겨진 메서드가 실행됩니다.

위 내용은 정적 메소드는 실제로 Java에서 상속됩니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.