java - 多重继承和接口(interface)

标签 java jvm multiple-inheritance

一个常见的“答案是否定的问题”是 Java 是否支持多重继承?

我正在寻找有关 (Oracle) JVM 如何处理此规则的详细说明;更具体地说:

在运行时,JVM 是否有任何接口(interface)的概念,或者只是将其视为碰巧未实现任何方法的抽象类?

换句话说,我的代码会变成这样吗?

我的代码:

public class A extends B implements C {

public interface C {

编译为:

public class A extends B, C {

public abstract class C {

在这种情况下,只要不超过一个父类实现方法,就可以说 JVM 支持多重继承。

或者接口(interface)是否更深入地融入到 JVM 的内部?

最佳答案

在运行时,JVM 确实有接口(interface)的概念。通过接口(interface)类型调用的方法通过 invokeinterface 进行调用。

将接口(interface)编译成抽象类是行不通的:

  • 单个方法确实可以由一个类实现的多个接口(interface)来实现。
  • 一个接口(interface)方法可以在多个实现该接口(interface)的类型上调用。
  • 接口(interface)不提供其方法的实现。

关于java - 多重继承和接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17947209/

相关文章:

java - 从 servlet 返回 HTML/XHTML 文件

java - GC 花了三个小时来降低 1.2GB 的堆,可能是什么原因?

java - 返回泛型扩展两种类型的工厂方法

c++ - 纯虚继承、多重继承、C4505

java - 如何注释 stub 中的隐式参数

java - Java 中的换行转义序列未以正确的方式取消转义

java - 在没有OAuth的情况下用java将文件上传到google驱动器

scala - Scala 在专有 JVM 上运行良好吗?

java - 如果您不在 java 8 rcp 应用程序中指定 maxmetaspace 参数,会发生什么情况?

python - 遍历返回 NotImplemented 的 Python 特殊方法的 MRO