语法问题 - 扩展实现接口的抽象类

时间:2011-01-12 04:36:18

标签: java

只是一个简单的语法问题。假设我们有一个接口,我们将调用IMyClass,以及一个实现我们将调用AbstractMyClass的抽象类,并声明如下:

public abstract class AbstractMyClass implements IMyClass {
}

现在,当我们创建MyClass的具体实现时,我们将其称为... MyClass !,我们可以通过两种方式声明它:

public class MyClass extends AbstractMyClass {
}

public class MyClass extends AbstractMyClass implements IMyClass {
}

这里最好的是什么?我想这个问题的答案只是一个偏好问题,但我只想听到一些关于此的想法。

提前致谢,

约瑟夫。

2 个答案:

答案 0 :(得分:2)

后一种形式更明确的是MyClass故意实施IMyClass并且不是偶然的。如果这是你想要强调的,那么这种形式就更清楚了。它还可以防止对AbstractMyClass的未来更改。也许在某些时候它不再实施IMyClass。

在大多数情况下,第一种形式是足够的,额外的冗长只会给你带来任何好处。

答案 1 :(得分:1)

这只是一个偏好问题。 FWIW,您可以在JDK源中找到两者的示例:

public class HashMap<K,V>
    extends AbstractMap<K,V>
    implements Map<K,V>, Cloneable, Serializable

public class ThreadPoolExecutor extends AbstractExecutorService