【问题标题】:Is it considered better form for an abstract class to include abstract methods from an interface?抽象类包含来自接口的抽象方法是否被认为是更好的形式?
【发布时间】:2014-11-20 18:19:11
【问题描述】:

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

界面:

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?
}

【问题讨论】:

  • 除非您有任何要添加的内容,例如 javadoc,否则不要使用它们。

标签: java interface abstract-class abstract-methods


【解决方案1】:

你应该把它们排除在外。 它们不会增加任何好处,只会增加要维护的代码量。如果您想删除该方法,您需要在另一个位置执行此操作。

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

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

public boolean isPersistent() {
  return true;
}

isPersistent() 只需要在使用不同于默认值的子类中被覆盖。

【讨论】:

    猜你喜欢
    • 2019-12-28
    • 2018-12-15
    • 1970-01-01
    • 2011-05-22
    • 2011-10-25
    • 2017-10-12
    • 2012-12-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多