我意识到从接口遗留下来的抽象方法的声明是可选的,但是我想知道它是否在语义上被认为是更好的包含它们。
接口:
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?
}
答案 0 :(得分:4)
你应该把它们抛弃。 他们没有添加任何好处,只是增加了要维护的代码量。如果要删除该方法,则需要在另一个位置执行该操作。
代码质量分析器通常要求减少不需要的任何东西:冗余修饰符(例如:接口中的public abstract
),声明的运行时异常(throws IllegalArgumentException
),冗余抛出(throws Exception, IOException
)等等。
但是,您可以考虑在抽象类中实现方法的默认行为(具有空主体的事件侦听器方法,返回默认值的配置属性方法,...)。 例如:
public boolean isPersistent() {
return true;
}
isPersistent()
只需要在使用其他值而不是默认值的子类中覆盖。