- 父类中如果没有定义任何构造方法或者只有一个无参构造方法,此时new一个子类的实例,就会调用父类的无参构造,子类不需要显示的调用;
- 如果父类中有一个或多个带参构造方法,此时如果new一个子类的实例,就需要显示的调用父类的构造方法并进行传参,否则无法创建父类实例,会编译出错;
- 使用super关键字就能够调用父类的构造方法;
- 创建子类实例时,先调用父类构造方法,再调用子类构造方法,并且super()必须放在第一行。
super 与 this 的区别
- 如果子类中的一个属性是从父类继承过来的,既可以使用 this.属性名 获取,也可以使用 super.属性名 获取,获取到的是同一个属性;
- 如果一个属性只在子类中存在,那就不能通过super访问,只能通过this访问;
- 如果父类和子类有相同的属性,那么通过this访问子类属性,通过super访问父类属性。