由上图可以看到,虽然new了一个Student的对象,在执行时先执行了父类中构造器里的语句,然后再执行了子类的构造方法。所以在每个输出语句前有一个隐藏语句super(),该语句调用的是父类的构造器,且super()语句必须是在构造器中的第一条语句
可以看到软件提醒super()语句必须在第一位
this()语句是调用本类中的构造器
super()是调用的父类的构造器
但this()语句在构造器中同样要在第一位的,所以this()和super()不能在构造器中同时存在
所以如果构造器里不显示定义super(),默认是调用的父类的无参构造,若此时父类中没有无参构造器,则子类中调用父类无参构造器的语句将会报错,如下图:
super()和this()语句必须在构造器中使用
且this()在非继承的关系中也可以使用,但super()只能在继承关系下使用