在我遇到的当前问题 ( 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/