当前位置: 首页 > 面试题库 >

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

魏英勋
2023-03-14
问题内容

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

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

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

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

问题答案:

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

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



 类似资料:
  • 问题内容: 我已经在某些计算机科学测试中看到了下一段,希望我能在这里对它的含义有一个很好的解释,因为我用它搜索了一个小时,却找不到任何东西。 “当我们说Java语言具有 虚拟方法调用时 ,是指在Java应用程序中,执行的方法由运行时的对象类型决定” 这是什么意思?谁能更好地解释它? 问题答案: 这些行的作者使用的C ++术语。 更好的术语是动态绑定/动态调度。 这意味着,对象的动态类型是“选择”将

  • 问题内容: PHP是否有像Java这样的虚拟机? 问题答案: 是。 与运行PHP的平台无关,这些脚本被编译为相同的字节码,并由Zend Engine运行。 与Java的区别在于,该编译后的代码通常不存储在单独的文件中,并且每次执行时都会重新编译脚本(但是,请参见操作码缓存)。

  • 问题内容: 我已经搜索了Wiki模块页面,但是找不到与virtualenv(python)或rvm类似的东西。 这里有人在自己的环境中分隔node.js吗?我真的不喜欢在系统范围内安装npm。 问题答案: 如果拥有系统范围的npm软件包是您的主要问题,那么可以考虑将非常酷的’bundle’命令与npm一起使用。这更接近于冻结宝石或在导轨中使用捆绑器,而不是rvm。 超级容易。只需创建一个packa

  • 我有一组数据帧,其中一列包含一个分类变量。我想把它转换成几个虚拟变量,在这种情况下,我通常使用。 发生的事情是,查看每个数据帧中可用的数据,找出有多少类别,从而创建适当数量的虚拟变量。然而,在我现在研究的问题中,我实际上提前知道了可能的类别。但当单独查看每个数据帧时,并不一定会出现所有类别。 我的问题是:有没有一种方法可以传递给(或等效函数)类别的名称,以便对于给定数据帧中没有出现的类别,它只创建

  • 我是HSQLDB的新手,我不确定HSQLDB是否支持虚拟列和JSON路径。我正在尝试使用此数据库来运行我的单元测试。 我们使用Oracle作为实际数据库,Oracle表有一个字段接受JSON作为CLOB。使用Oracle中的JSON路径功能,我们创建了解析JSON并创建虚拟列的虚拟列。Oracle表架构如下: 是否可以在HSQLDB中mimc相同的功能?

  • 我正在做一个项目,但是在这个特殊的部分我感到很难。我需要创建一个方法,如果一个2d数组中的所有条目都为假,则返回布尔值true,如果其中只有1个值为真,则返回false。目前,我在该方法中的代码如下所示: 我最初的想法是,我将使用一个“计数器”变量,这样,如果lightArray中的每个值都有一个“计数器”,if语句将只返回true。经过测试,当所有值都设置为false时,它似乎不会注册。 我还尝