java中的所有方法都是隐含的虚拟

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

但是根据OOPs运行时绑定的概念,函数必须有虚拟关键字。在Java中隐式虚拟的所有方法或者java中是否存在任何编译时绑定

如果有任何编译时绑定,你能给我一些具体情况,或链接到更多信息

  1. 静态(这里没有绑定的意思,因为静态不属于对象)
  2. final(这不是一个有效点,因为它可以用另一种方式获得)

默认情况下,Java中的所有非static ,非final和非private方法都是虚拟的。 但是,JVM足够聪明,只能找到只有一个给定方法实现的类,并将其转换为静态绑定。

这样您就不必记住virtual关键字(由于C ++中的析构函数中缺少virtual而导致的内存泄漏?),而性能不会受到太大影响。

非静态方法调用是Java的主要(唯一)动态方面。 所有方法都是Java中的虚拟方法。 这不适用于基于静态对象类型在编译时绑定的静态方法。

从wiki定义虚拟:

在面向对象的编程中,虚函数或虚方法是一种函数或方法,其行为可以通过具有相同签名的函数在inheritance类中重写,以提供多态行为。

因此,根据定义,除了final方法和私有方法之外,JAVA中的每个非静态方法都是默认的虚方法。 不能为多态行为inheritance的方法不是虚方法。

我们无法在子类中重写的方法通常称为非虚方法。

在Java静态中,私有和最终方法默认为非虚拟方法。 其他方法默认为虚拟。