3

为什么这个构造会在 Eclipse 中生成错误/警告?我理解它将生成报告的原因,但我想一定有一些理由,如果你拼出那些多余的超级接口,可能会出现什么问题。

例子:

interface I1{
    void boo();
}


class A implements I1 {
    public void boo() {}
}


class B extends A implements I1 {
    public void boo() {}
}

警告在 B 中,靠近工具 I1

4

2 回答 2

3

A如果类实现I1和类B扩展,则成像A。默认情况下B实现I1,即使它不需要在I1. 如果A要更改为 implementation I2B仍然会编译。

但是,如果B显式implements I1但不提供方法,则此更改将导致B不再编译。

当然,我忽略了用户B可能假设B实现I1. 对于这种情况,我们假设这不是问题。

于 2012-10-18T11:01:18.333 回答
3

这只是一个警告,我想它有两个原因:

  • 它是多余的,因此可以删除。噪音越小越好。但这是风格问题
  • 它告诉您不需要在 B 中实现任何接口方法,因为它们已经在 A 中实现。因此,实现接口方法不仅会实现接口,还会覆盖超类中的默认实现.
于 2012-10-18T11:05:08.707 回答