Javaで、どのサブクラスにも継承されていないメソッドが呼び出された場合、動的バインディングと静的バインディングのどちらが使用されますか?
この特定のケースでは出力に違いがないことはわかっていますが、これを知りたかっただけです。
Javaで、どのサブクラスにも継承されていないメソッドが呼び出された場合、動的バインディングと静的バインディングのどちらが使用されますか?
この特定のケースでは出力に違いがないことはわかっていますが、これを知りたかっただけです。
クラスまたはメソッドがマークされていない限り、final
実行時にクラス ローダーによって導入された新しい型によってオーバーライドされる可能性があります。この意味で、それらは依然として「動的」です。
実行時に、JVM はロードされたすべてのクラスと、メソッドがオーバーライドされているかどうかを認識します。メソッドのfinal
修飾子は JVM にとって重要ではありません。
その知識により、JVM はオーバーライドされていないメソッドへの呼び出しを最適化します。その意味で、バインディングは「静的」です。
Java のインスタンス メソッド呼び出しでは、常に動的バインディングが使用されます。静的メソッドとプライベート メンバーへの直接アクセスでは、静的バインディングを使用します。
長さ: http://geekexplains.blogspot.com/2008/06/dynamic-binding-vs-static-binding-in.html
この記事はそれをかなりうまく説明しています。