java中的所有方法都是隐含的虚拟
如果java中没有编译时绑定,这是否意味着所有绑定都是在运行时完成的?
但是根据OOPs运行时绑定的概念,函数必须有虚拟关键字。在Java中隐式虚拟的所有方法或者java中是否存在任何编译时绑定
如果有任何编译时绑定,你能给我一些具体情况,或链接到更多信息
- 静态(这里没有绑定的意思,因为静态不属于对象)
- final(这不是一个有效点,因为它可以用另一种方式获得)
默认情况下,Java中的所有非static
,非final
和非private
方法都是虚拟的。 但是,JVM足够聪明,只能找到只有一个给定方法实现的类,并将其转换为静态绑定。
这样您就不必记住virtual
关键字(由于C ++中的析构函数中缺少virtual
而导致的内存泄漏?),而性能不会受到太大影响。
非静态方法调用是Java的主要(唯一)动态方面。 所有方法都是Java中的虚拟方法。 这不适用于基于静态对象类型在编译时绑定的静态方法。
从wiki定义虚拟:
在面向对象的编程中,虚函数或虚方法是一种函数或方法,其行为可以通过具有相同签名的函数在inheritance类中重写,以提供多态行为。
因此,根据定义,除了final方法和私有方法之外,JAVA中的每个非静态方法都是默认的虚方法。 不能为多态行为inheritance的方法不是虚方法。
我们无法在子类中重写的方法通常称为非虚方法。
在Java静态中,私有和最终方法默认为非虚拟方法。 其他方法默认为虚拟。