今天我迷失在 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 >
时,这意味着董事会可以接受 Figure
或 Figure
的子接口(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/