java - 为什么任何类型都可以EXTENDS接口(interface)?

标签 java interface polymorphism extends parameterized

今天我迷失在 Java 多态性中。我做了一些我认为不可能的事情。即 - 我有扩展接口(interface)。

我创建了空接口(interface):

public interface Figure {}

现在没有什么新鲜事。然后我创建了带有参数的参数化类 Board 来扩展我的界面!

public class Board< T extends Figure > { 
    T[][] board;
}

我还以为不可能呢!尽管如此,我还是因为不理解而走得更远。

我已经创建了实现Figure接口(interface)的类:

public class Cross implements Figure{}

令我惊讶的是我能够做到这一点:

Board b = new Board<Cross>();

请帮我解释一下这个奇怪的情况。
我对多态了解一点,我明白Cross就是Figure。 我很困惑为什么任何类型都能够扩展接口(interface),并且实现接口(interface)(不扩展接口(interface))的类如何作为扩展接口(interface)的参数是正确的。

请帮我解释一下这个多态性的困惑。谢谢。

最佳答案

当你说public class Board< T extends Figure >时,这意味着董事会可以接受 FigureFigure 的子接口(interface)或任何实现这些接口(interface)的类。所以,当你说:

public class Cross implements Figure{}

Board b = new Board<Cross>();

这意味着 Cross 已经实现了 Figure ,因此 Board可以接受Cross ,自 Cross IS-A Figure

就扩展接口(interface)而言,只有接口(interface)才能扩展接口(interface)。因此,以下内容是合法的:

public interface TwoDimensionalFigure extends Figure{}.

所以任何实现 TwoDimensionalFigure 的类也可以通过 Board 接受.

关于java - 为什么任何类型都可以EXTENDS接口(interface)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16272984/

相关文章:

java - 重新格式化字符串数组

java - 打包 Java 软件以供专业用途

java - 为什么我的变量无法接收值(接口(interface))

iphone - Interface Builder 中的组 View

Java向父类(super class)添加方法

java - 如何在 Eclipse 工作区之外打开和编辑文件,同时使文件与 Eclipse 同步?

java - 如何只用部分词来表达整个词?

Java接口(interface)继承与实现

c++ - 多态性 - "expected class name before { token"错误

asp.net-mvc - 多态模型绑定(bind)