如果接口我继承了一个默认方法,其签名与I继承的另一个方法等效,则会发生编译时错误.(这是另一种方法是抽象的还是默认的.)
从上面的描述下面的代码不应该编译.
但是,当我编译这段代码时,它的工作绝对正常.
interface A {
void foo(String s);
}
interface B<T> extends A {
default void foo(T x) {
}
}
interface C extends B<String> {
}
Run Code Online (Sandbox Code Playgroud)
为什么编译?
如果接口我继承了一个默认方法,其签名与I继承的另一个方法等效,则会发生编译时错误.(这是另一种方法是抽象的还是默认的.)
报价指的是以下情况:
interface A {
void foo(String s);
}
interface B<T> {
default void foo(T x) {
}
}
interface C extends A, B<String> {
}
Run Code Online (Sandbox Code Playgroud)
其中C都继承了默认方法,而另一个方法具有相同的签名.
在你给定的情况下B#foo已经覆盖A#foo,因此C只继承了一个方法.
| 归档时间: |
|
| 查看次数: |
124 次 |
| 最近记录: |