Java 当我已经扩展了实现接口的类时,是否应该显式实现接口?

Java 当我已经扩展了实现接口的类时,是否应该显式实现接口?,java,oop,Java,Oop,如果我有一个接口和一个抽象类,比如Maven插件API中的AbstractMojo和Mojo,那么当AbstractMojo已经实现该接口时,我是否应该显式实现Mojo public class MyMojo extends AbstractMojo implements Mojo { // like this? // ... } public class OtherMojo extends AbstractMojo { // or like this? //

如果我有一个接口和一个抽象类,比如Maven插件API中的
AbstractMojo
Mojo
,那么当
AbstractMojo
已经实现该接口时,我是否应该显式实现
Mojo

public class MyMojo extends AbstractMojo implements Mojo {
    // like this?
    // ...
}

public class OtherMojo extends AbstractMojo {
    // or like this?
    // ...
}

这两个类声明中的任何一个都比另一个有好处吗?

您应该问自己的问题是,“为什么我要实现已经在更高层次上实现的东西?”


您不需要这样做,因为您没有在抽象类(最初属于接口)中实现的任何抽象方法都必须在扩展抽象类的具体类中实现。因此,在具体类和抽象类中实现没有意义,您应该问自己的问题是,“为什么我要实现已经在更高层次上实现的东西?”


您不需要这样做,因为您没有在抽象类(最初属于接口)中实现的任何抽象方法都必须在扩展抽象类的具体类中实现。因此,在具体类和抽象类中实现没有任何意义,我认为您不应该这样做。您可以实现AbstractMojo,但如果您已经扩展了实现它的类,那么它是多余的。

我认为您不应该这样做。您可以实现AbstractMojo,但是如果您已经扩展了实现它的类,那么它是多余的。

不使用无关的
实现的第三个原因是:读者希望所有接口方法在这里都有它的第一个实现

因此,对超级方法的调用可能会被忘记(由一个不专心的开发人员)

这是误导


生成的javadoc将列出所有实现的接口。

不使用无关的
实现的第三个原因是:读者希望所有接口方法在这里都有第一个实现

因此,对超级方法的调用可能会被忘记(由一个不专心的开发人员)

这是误导


生成的javadoc将列出所有实现的接口。

每个使用IDE的人都可以很容易地看到您的类扩展了哪些接口,甚至可以在层次结构中显示(例如,Eclipse中的ctrl+T、ctrl+T)或查看javadoc


因此,如果您扩展了许多接口,那么将此显式化是没有必要的,并且可能会使代码变得混乱。代码在功能上是相同的。

使用IDE的每个人都可以很容易地看到您的类扩展了哪些接口,甚至可以在层次结构中显示(例如,Eclipse中的ctrl+T、ctrl+T)或查看javadoc


因此,如果您扩展了许多接口,那么将此显式化是没有必要的,并且可能会使代码变得混乱。代码在功能上是相同的。

其中一个是明确的。一是含蓄。如果您想让读者注意到您正在实现接口这一事实,您可能更喜欢显式的。如果你认为这只是增加了混乱,你可能更喜欢让它隐式。类似的问题:一个是显式的。一是含蓄。如果您想让读者注意到您正在实现接口这一事实,您可能更喜欢显式的。如果你认为这只是增加了混乱,你可能更愿意让它含蓄。类似的问题: