java中,如果调用了不被任何子类继承的方法,是使用动态绑定还是静态绑定?
我知道在这种特殊情况下它不会对输出产生任何影响,但只是想知道这一点。
java中,如果调用了不被任何子类继承的方法,是使用动态绑定还是静态绑定?
我知道在这种特殊情况下它不会对输出产生任何影响,但只是想知道这一点。
除非类或方法被标记final
,否则它可能被类加载器在运行时引入的新类型覆盖。从这个意义上说,它们仍然是“动态的”。
在运行时,JVM 知道所有加载的类,以及方法是否被覆盖;方法上的final
修饰符对 JVM 无关紧要。
有了这些知识,JVM 将优化对未被覆盖的方法的调用;从这个意义上说,绑定是“静态的”。
Java 中的实例方法调用总是使用动态绑定。静态方法和对私有成员的直接访问使用静态绑定。
长度: http: //geekexplains.blogspot.com/2008/06/dynamic-binding-vs-static-binding-in.html
这篇文章解释得很好。