这不是一个接口,它似乎是一个类(或也缺少关键字的抽象类abstract
),它应该是:-
public interface Foo<T> {
T doSomething();
}
除了
public class Bar implements Foo<Number> { ... }
public class Bar2 extends Bar implements Foo<Integer> { ... }
会给你编译时错误,
The interface Foo cannot be implemented more than once with different arguments: Foo<Number> and Foo<Integer>
但是,如果您改为这样做:-
public class Bar implements Foo<Integer> { ... }
public class Bar2 extends Bar implements Foo<Integer> { ... }
这不会产生编译时错误,如果你doSomething()
在 Bar2 中实现,它会在你这样做时考虑到这一点:-
Bar2 bar2=new Bar2();
bar2.doSomething();
否则它将运行doSomething()
fromBar
显然,如果你这样做: -
Bar bar=new Bar();
bar.doSomething();
它将考虑到doSomething()
,Bar
因为这次它确实只考虑了一个实现doSomething()
,即Bar
(你必须实现它,因为Bar
正在实现接口Foo
:))