java - 创建接口(interface)类java的实例

标签 java interface instance conceptual

有人可以向我解释一下创建 Interface 类的变量的含义是什么吗?

具体来说,下面的代码是什么意思:

InterfaceA x = (InterfaceA) factory.createFactoryObject(zz.CONST);

我一直认为接口(interface)(在 Java 中)只是方法声明的集合,其功能由实现接口(interface)的类定义。例如,如果我有一个界面:

public interface IMoveBehavior(){
    public void move_Along_X();
    public void move_Along_Y();
    public void move_Along_Z();
}

然后该类将使用此接口(interface):

public class ABC() implements IMoveBehavior{
    public void move_Along_X(){
        //do whatever
    }
    public void move_Along_Y(){
        //do whatever
    }
    public void move_Along_Z(){
        //do whatever
    }   
}

那么,回到

InterfaceA x = (InterfaceA) factory.createFactoryObject(zz.CONST);

我真的不明白这在概念上到底意味着什么。有人可以解释一下或向我指出可以进行 self 教育的资源吗?

谢谢!!

最佳答案

您正在看到多态性的案例,它是使接口(interface)变得有用的核心概念之一。

InterfaceA x = (InterfaceA) factory.createFactoryObject(zz.CONST);

这里发生的是factory.createFactorObject(zz.CONST);返回一个对象。我不知道它到底是什么类型的对象,但是如果这段代码编译并成功运行,那么该对象至少必须是一个实现 InterfaceA 的类。因此,它具有 InterfaceA 中定义的所有方法的实现。

因此,您可以强制转换为 InterfaceA,并假定您可以使用 InterfaceA 中定义的方法。底层 JVM 负责准确了解这些方法是如何实现的(通过实例化对象的类)以及调用这些方法时要执行的操作。

关于java - 创建接口(interface)类java的实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32143238/

相关文章:

delphi - 如何为重载接口(interface)方法创建解析子句?

c# 类引用而不是实例引用

java - 在 Notepad++ 或 Notepad 中查看 java 类文件中的奇怪字符

Java - 二维数组检查对角数字板

java - 正确生成带有特殊字符的站点地图 XML

java - 最小化 Golang 中的接口(interface)

java - 无法获取 struts.xml 以连接到 struts-2.0.dtd

sorting - 可以在类型约束之外使用的有序类型的 Go 接口(interface)?

java - 访问动态生成的 GUI JTextField 对象

c++ - 尝试 push_back 一个实例时,C++ 中的 vector 出现奇怪的错误