Java中的所有方法是否隐式都是虚拟的


问题内容

如果Java中没有编译时绑定,是否意味着所有绑定都在运行时完成?

但是,按照OOP的运行时绑定概念,函数必须具有virtual关键字。.是否所有方法在Java中都是隐式虚拟的,还是Java中存在任何编译时绑定?

如果有任何编译时约束,您能给我一些具体情况,还是链接到更多信息

  1. 静态的(这里没有绑定的含义,因为静态不属于对象)
  2. 最终的(这不是有效点,因为可以通过其他方式实现)

问题答案:

所有非static,非final和非private法中默认Java虚拟。但是,JVM非常聪明,可以找到仅具有给定方法的一种实现的类并将其转换为静态绑定。

这样,您就不必记住virtual关键字(由于virtualC ++中的析构函数丢失而导致内存泄漏吗?),而性能并没有受到太大的影响。