我有一个接口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() { // ... } }
我的代码按预期工作,但我有几个问题:
我应该在B类中声明抽象方法doX()吗?为什么不)?
我是否还应该在C类和D类上明确声明"实现A"?为什么不)?
kgiannakakis.. 8
我认为最好这样做如下:
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() { // ... } }
您不应该将接口(方法的签名)与实现混合在一起.
我认为最好这样做如下:
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() { // ... } }
您不应该将接口(方法的签名)与实现混合在一起.