java - Java是如何实现接口(interface)多态的?

标签 java pointers interface polymorphism

为了拥有指向某物的指针,您需要确切地知道它是什么类型,对于类,它包含的所有数据。我可以看到多态性如何适用于类:指针指向派生类中与父类具有相同数据的部分,并且“不知道”它下面的附加数据。

这对 Java 接口(interface)如何起作用?接口(interface)不提供数据,只提供一组有保证的方法。没有基类指针可以指向的统一数据。

如果这没有意义,我很抱歉;我可以试着让它更清楚。

最佳答案

这取决于 JVM 实现。接口(interface)的实现很棘手。

最简单的解决方案是为接口(interface)类型的每个参数传递两个 指针。第一个指针指向对象。第二个指针指向特定于派生类和接口(interface)组合的虚拟表。使用此解决方案,为特定接口(interface)转换找到合适的第二个指针涉及线性遍历列表。因此,它不是 O(1),而是与实现接口(interface)的数量成线性关系。如果不在稀疏表上浪费大量内存,就无法在 O(1) 中实现接口(interface)。

关于java - Java是如何实现接口(interface)多态的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29483769/

相关文章:

java - Tomcat - 了解 CredentialHandler

c++ - 将帧缓冲区从 Swift 传递到 C++ 的正确方法是什么?

c - 我应该如何在心理上解析这个陈述?

java - 接口(interface)和覆盖接口(interface)的方法

java - 如何实现类列表中不常见的方法/接口(interface)?

java - 用特定的实现类重写方法?

在 Linux 上部署为打包的 .war 时,由 FFmpeg 引起的 Java.lang.NoClassDefFoundError (适用于开发机器)

java - 从图库中选择的图像不会在 ImageView 中设置

java - 使用什么 vavr 集合来包装 java.util.ArrayList

c++ - 返回指针在另一个函数中访问它