产生的原因就是你在继承父类的时候 父类定义了有参构造器 没有无参构造器导致。
构造器不能继承。
子类的构造器一定会默认调父类的无参构造器,除非写代码明确指定调用父类的有参数构造器!调父类构造器并不是创建父类的实例,只是执行构造器内的代码而已。
声明定义类的时候,不写构造器,编译器会默认提供无参构造器;如果写了有参构造器,则编译器不会默认提供无参构造器,那么在写派生类的时候就会编译会有问题,因为子类的构造器一定会默认调父类的无参构造器,但是父类没有。
所以 我们在子类的构造方法中显示的调用父类的有参构造 super(args)