Java の静的メソッドの継承
Java では静的メソッドは継承されないという共通の理解にもかかわらず、不可解な例外が存在します。この混乱は、Java 言語における継承の性質の誤解から生じています。
Java の公式ドキュメントによると、アクセス可能なすべてのメソッドはサブクラスによって継承されます。これには、パブリック メソッド、プロテクト メソッド、およびパッケージ プライベート メソッドが含まれます。継承されたメソッドは、そのまま使用することも、オーバーライドすることも、非表示にすることも、新しいメソッドで補足することもできます。
静的メソッドの場合、継承動作は、サブクラスでオーバーライドされる静的メソッドが継承されたメソッドを非表示にするという点でのみ異なります。メソッドをオーバーライドするのではなく。サブクラスから呼び出されると、継承されたメソッドの代わりにサブクラスの隠しメソッドが実行されます。
したがって、クラス B の静的メソッド display() にアクセスして呼び出すことができるのは、メソッドは、スーパークラスの他のアクセス可能なメンバーとともに継承されます。 B.display() の一見異常な動作も、継承された静的メソッドではなく、クラス B の非表示の静的メソッドを呼び出すため機能します。
オーバーライドと非表示のこの違いは、重要な意味を持ちます。オーバーライドの場合、サブクラス内のメソッドは、スーパークラスから呼び出されたかサブクラスから呼び出されたかに関係なく、常に実行されます。ただし、非表示の場合、呼び出されるメソッドはコンテキストによって異なります。静的メソッドがスーパークラスから呼び出された場合は、継承されたメソッドが実行されます。それ以外の場合は、サブクラスの隠しメソッドが実行されます。
以上が静的メソッドは実際に Java で継承しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。