ホームページ >Java >&#&チュートリアル >Java 8 以前のインターフェースで静的メソッドが許可されないのはなぜですか?また、静的メソッドをオーバーライドできないのはなぜですか?
Java のインターフェース (以下で定義されているとおり)以前のバージョンでは、静的メソッドを含めることができませんでした。これは Java 8 で変更され、静的メソッドが許可されるようになりました。ただし、1 つの疑問が残ります。そもそも、なぜ静的メソッドがインターフェイスで許可されておらず、なぜ静的メソッドをオーバーライドできないのでしょうか?
Java の以前のバージョンでは、インターフェイスで静的メソッドを使用できない実質的な技術的理由はありませんでした。それは単に言語作成者による設計上の決定でした。この決定は後に再検討され、Java 8 での静的インターフェイス メソッドの導入につながりました。
静的メソッドをオーバーライドできない理由は次のとおりです。メソッド呼び出しがどのように解決されるかの仕組みに根ざしています。静的メソッドは特定のクラスに関連付けられているため、コンパイル時に解決されます。対照的に、インスタンス メソッドは、実行時にのみ判明するオブジェクトの型に基づいて動的にディスパッチされます。
静的メソッドの場合、クラスはコンパイル時に判明するため、動的ディスパッチの必要はありません。 。したがって、オーバーライドの概念は静的メソッドには適用されません。
以上がJava 8 以前のインターフェースで静的メソッドが許可されないのはなぜですか?また、静的メソッドをオーバーライドできないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。