一个接口能在Java中扩展多个接口吗?此代码在我的IDE中显示为有效,它确实编译:
interface Foo extends Runnable, Set, Comparator<String> { }
但我听说Java中不允许多次继承。为什么会出现接口异常呢?
发布于 2013-10-23 15:47:06
是的,你能做到的。接口可以扩展多个接口,如下所示:
interface Maininterface extends inter1, inter2, inter3 {
// methods
}
一个类也可以实现多个接口。如果两个接口都有一个定义相同名称和签名的方法,该怎么办?
有一个棘手的问题:
interface A {
void test();
}
interface B {
void test();
}
class C implements A, B {
@Override
public void test() {
}
}
然后,单个实现对两种实现都有效:)。
阅读我在这里的完整帖子:
http://codeinventions.blogspot.com/2014/07/can-interface-extend-multiple.html
发布于 2013-10-23 15:49:06
接口可以扩展多个接口。
类可以实现多个接口。
但是,类只能扩展单个类。
在谈论extends
和class
时,注意如何使用interface
和class
这两个词。
发布于 2018-10-07 08:29:09
在关于多重继承类型的Oracle文档页面中,我们可以找到准确的答案这里。在这里,我们首先应该知道java中的多重继承的类型:-
Java“不支持状态的多重继承,但是它通过默认方法支持实现的多重继承,因为java 8发布了,并且有接口的类型的多重继承。
然后这里就出现了“钻石问题”以及Java如何处理这个问题:-
所以这里我们将得到错误,因为:-接口D从类型B继承了与方法()无关的缺省值,而C接口D继承了B,C
你可以像:-
interface D extends B, C {
@Override
default void method() {
B.super.method();
}
}
总之,我们可以说java 不支持的状态多重继承,但是支持实现的多重继承和类型的多重继承。
https://stackoverflow.com/questions/19546357
复制相似问题