1

Javaで、どのサブクラスにも継承されていないメソッドが呼び出された場合、動的バインディングと静的バインディングのどちらが使用されますか?

この特定のケースでは出力に違いがないことはわかっていますが、これを知りたかっただけです。

4

3 に答える 3

2

クラスまたはメソッドがマークされていない限り、final実行時にクラス ローダーによって導入された新しい型によってオーバーライドされる可能性があります。この意味で、それらは依然として「動的」です。

于 2011-10-13T22:39:41.383 に答える
1

実行時に、JVM はロードされたすべてのクラスと、メソッドがオーバーライドされているかどうかを認識します。メソッドのfinal修飾子は JVM にとって重要ではありません。

その知識により、JVM はオーバーライドされていないメソッドへの呼び出しを最適化します。その意味で、バインディングは「静的」です。

于 2011-10-13T23:19:00.233 に答える
0

Java のインスタンス メソッド呼び出しでは、常に動的バインディングが使用されます。静的メソッドとプライベート メンバーへの直接アクセスでは、静的バインディングを使用します。

長さ: http://geekexplains.blogspot.com/2008/06/dynamic-binding-vs-static-binding-in.html

この記事はそれをかなりうまく説明しています。

于 2011-10-13T22:49:32.163 に答える