只是一个简单的语法问题。假设我们有一个接口,我们将调用IMyClass
,以及一个实现我们将调用AbstractMyClass
的抽象类,并声明如下:
public abstract class AbstractMyClass implements IMyClass {
}
现在,当我们创建MyClass的具体实现时,我们将其称为... MyClass
!,我们可以通过两种方式声明它:
public class MyClass extends AbstractMyClass {
}
和
public class MyClass extends AbstractMyClass implements IMyClass {
}
这里最好的是什么?我想这个问题的答案只是一个偏好问题,但我只想听到一些关于此的想法。
提前致谢,
约瑟夫。
答案 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