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 回答