Hen*_*ing 7 java interface class declaration abstract
我有一个接口A,我必须提供一些不同的实现.但是,这些实现共享一些辅助方法,因此我将这些方法移动到抽象基类.
Interface A {
void doX();
}
abstract Class B implements A {
protected void commonY() {
// ...
}
@Override
public abstract void doX();
}
Class C extends B {
@Override
public void doX() {
// ...
}
}
Class D extends B {
@Override
public void doX() {
// ...
}
}
Run Code Online (Sandbox Code Playgroud)
我的代码按预期工作,但我有几个问题:
我应该在B类中声明抽象方法doX()吗?为什么不)?
我是否还应该在C类和D类上明确声明"实现A"?为什么不)?
我认为最好这样做如下:
Interface A {
void doX();
}
abstract Class B {
protected void commonY() {
// ...
}
}
Class C extends B implements A{
public void doX() {
// ...
}
}
Class D extends B implements A{
public void doX() {
// ...
}
}
Run Code Online (Sandbox Code Playgroud)
您不应该将接口(方法的签名)与实现混合在一起.