1
4
除了波义耳所说的,你不能在不暗示编者意图的情况下改变它。通过将泛型引入接口,可以做到这一点,比如:
|
2
4
通过更改类Y中输入参数的类型,您已经更改了方法的签名,这意味着编译器将其视为完全不同的方法。 Java接口就像一个合同。任何实现它的东西 必须 实现它定义的确切方法。通过使用不同的方法签名,您没有真正实现定义的方法,因此您违反了该约定。 |
3
2
尝试一下
|
4
1
假设你已经做了你想做的事情,假设Java允许它。让我们假设另一个类,称之为z,也实现了x。因为z实现了x,而且由于x的定义,你必须能够为任何z调用x.foo(z)。但是,如果你将z传递给它的foo(),y(x)不知道该怎么做。这就是为什么。 |
5
0
通过实现接口X,您保证在此接口上实现所有方法,这意味着您的foo方法可以采用任意X。 现在,如果您只接受ys作为foo方法的参数,那么就不会完全实现接口,因为实现x的所有其他类都不是foo的有效参数。 |
6
0
因为接口为所有实现类指定了公共行为。假设您有一些其他的类,所有实现X,您会期望如果您有类X的对象,您可以用类X的参数(可以是它的任何子类或实现)调用foo,那么让我们假设您有这样的代码:
这将是错误的,因为对于代码,foo只接受类y的参数 |
Gabe Tucker · 无法在golang中分配接口对象指针 2 年前 |
randomDud · C#从另一个接口重写接口方法 2 年前 |
evilsushi · C#接口不允许成员类满足要求 6 年前 |