![]() |
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的参数 |
|
user29759326 · 如何返回递归函数中的最后一个值? 6 月前 |
|
malife89 · 将java中的字符串读取为正确的日期格式 7 月前 |
![]() |
Tim · 在java中,有没有更快的方法将字节数组写入文件? 7 月前 |
![]() |
rudraraj · java中未声明最终变量 7 月前 |
![]() |
Bala Ji · 以下BFS的实施效率如何? 7 月前 |