它是否被认为是抽象类从接口中包含抽象方法的更好形式?

时间:2014-11-20 18:19:11

标签: java interface abstract-class abstract-methods

我意识到从接口遗留下来的抽象方法的声明是可选的,但是我想知道它是否在语义上被认为是更好的包含它们。

接口:

public interface Interface {
//Other methods....
public void unimplementedMethod();
}

抽象类:

public abstract Class AbstractClass implements Interface {
//Implemented methods....
public abstract void unimplementedMethod();   //Should include or better to leave out?
}

1 个答案:

答案 0 :(得分:4)

你应该把它们抛弃。 他们没有添加任何好处,只是增加了要维护的代码量。如果要删除该方法,则需要在另一个位置执行该操作。

代码质量分析器通常要求减少不需要的任何东西:冗余修饰符(例如:接口中的public abstract),声明的运行时异常(throws IllegalArgumentException),冗余抛出(throws Exception, IOException )等等。

但是,您可以考虑在抽象类中实现方法的默认行为(具有空主体的事件侦听器方法,返回默认值的配置属性方法,...)。 例如:

public boolean isPersistent() {
  return true;
}

isPersistent()只需要在使用其他值而不是默认值的子类中覆盖。