Java:抽象类继承非抽象类,且不包含抽象方法有何负面作用吗?

我定义了一个抽象类

继承非抽象类,

且不包含抽象方法

但是运行 OK

这样做有啥负面作用?

public abstract class ExceptionBase extends Exception {
  protected int status;
  protected int code;

  public ExceptionBase(String msg){
    super(msg);
  }

  public ExceptionBase(int status, int code, String msg){
    super(msg);
    this.status = status;
    this.code = code;
  }

  public int getStatus() {
    return status;
  }

  public void setStatus(int status) {
    this.status = status;
  }

  public int getCode() {
    return code;
  }

  public void setCode(int code) {
    this.code = code;
  }

  public String toString(){
    return String.format("%s [status=%i, code=%d, message=%s]", this.getClass().getSimpleName(), status, code, getMessage());
  }
}
阅读 4.2k
3 个回答

Object类是非抽象的,而所有类都继承了Object。
确定是否用继承 要确定是 is-a 关系 而不是 has-a

感觉abstract class表示的是"is a"关系,interface表示的是"like a"关系

没有什么负面作用

  1. ExceptionBase的作用是什么?:提供一套标准的toString()方法,明确详尽的展示异常信息
  2. 抽象类的与普通类的区别是,你无法实例化抽象类对象
  3. 你不希望你的系统内部直接用ExceptionBase,而是希望 用OrderException,PaymentException等更详尽、细致的自定义异常的时候,采用这种方式我反而觉得很好 大体是 OrderException extends ExceptionBase这之类的
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题