Java new子类时的顺序

126 阅读1分钟

问题提出

父类的构造函数是不能被继承的,当然也就不能被重写了。 那么父类的无参构造函数是不是就没有意义了?为何推荐父类要写一个无参构造函数呢?

继承测初始化顺序

父类静态成员 -------> 子类静态成员 --------> 父类构造函数 ------->子类构造函数

问题解答

  1. 子类构造(无论是有参还是无参构造),默认调用的是父类的无参构造。
    • 可以通过super来调用父类其他被允许访问的构造方法(必须放在子类构造方法中有效代码第一行)
  2. 如果父类去除无参构造,那么编译会报错。会从子类中报出父类的无参构造是没有被定义的。这也是为什么要求在父类无论有没有用,都建议写上无参构造。