java - 初始化接口(interface)?

标签 java object netbeans interface initialization

在我遇到的当前问题 ( printing a file to a physical printer in Java ) 中,我一直在像疯子一样运行代码,试图从所使用的每个类的 javadoc 中吞噬任何有用的遗漏信息。

现在,我从之前的问题中提取了相当多的这段代码,所以有相当一部分不是我自己写的。我注意到的问题是我抓取的代码正在初始化一个对象,比如实现接口(interface)(Doc)并将其分配给该接口(interface)的“SimpleDoc”?!

小代码片段:

Doc mydoc = new SimpleDoc(textStream, flavor, null);

现在,据我所知,在 Java 中我们创建了对象。我熟悉继承,也熟悉使用接口(interface)让一个类“继承”多个父类(super class)的技巧。

但这就是不正确。您可以创建一个实现接口(interface)的类,这对我来说很好。但是,当创建接口(interface)并将对象缩减为其接口(interface)时,这里发生了什么?当我准确引用 mydoc 时,我在访问什么?

最佳答案

您不能创建接口(interface),您在这里所做的是创建一个对象mydoc,它属于SimpleDoc 类,它实现了接口(interface)Doc。因为该类实现了该接口(interface),所以您可以像处理该接口(interface)的实例一样处理 mydoc。这允许您访问接口(interface)中所有声明的方法,这些方法在类 SimpleDoc

中实现

例如,如果您的文档界面如下所示:

public interface Doc {
    void print();
}

您的 SimpleDoc 类将如下所示:

public class SimpleDoc implements Doc {

    public void clear() { ... }

    @Override
    public void print() { ... }

}

... 那么您只能访问 print() - 您 mydoc 对象的方法。但你也可以说:

SimpleDoc mydoc = new SimpleDoc();

... 然后您还可以调用 clear()

关于java - 初始化接口(interface)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8842085/

相关文章:

java - 简单的 Java 服务器/客户端不工作?

java - android studio 中无法实例化一个或多个类错误,因此设计未显示

java - 线程 "main"org.apache.hadoop.ipc.RemoteException : Server IPC version 9 cannot communicate with client version 4. 中出现异常 如何解决此问题?

java - 我如何在 Wicket 1.5 中模仿 HybridUrlCodingStrategy?

java - RCP 或 SWT 构建 eclipse 插件

javascript - 如何在未知深度的物体中找到值(value)?

java - 编码用户界面与拖放

java - Netbeans 告诉我,当一个值是 int 时,它就是 boolean 值

javascript - 如何使用 JavaScript 获取 HTML 节点对象而不是 HTML 本身

java - 从文件插入对象数组