【发布时间】:2015-08-02 17:39:24
【问题描述】:
我正在阅读 Khalid A. Mughal 的 Java SCJP 书(针对 JE6),在主题 7.6 接口和第 313 页中,给出了这一点
子接口可以覆盖其超接口的抽象方法声明。被覆盖的方法不会被继承。
我不太明白“重写的方法不会被继承。” 是什么意思。我试着这样做:
interface A
{
void abc();
}
interface B extends A
{
@Override
void abc();
}
interface C extends B
{
void abc();
}
我没有收到任何错误。我不明白什么?
【问题讨论】:
-
覆盖方法不适用于接口,仅适用于类。
-
但是在书中它是在
interfaces的上下文中说的 -
在 Java 8 中,接口可以有方法的默认实现,但在早期版本中,覆盖的概念对接口没有意义。
-
@MickMnemonic 你可以用另一个抽象方法声明覆盖一个抽象方法声明。这可能涉及使返回类型更具限制性或更改抛出的异常列表。
-
返回类型不是方法签名的一部分
标签: java inheritance interface