父类中存在无参构造函数,是子类存在构造函数的前提,如果父类中不存在无参构造器(由于类会默认存在一个无参构造器,此时的情况指的是父类存在有参构造器而没有显式的写出无参构造器),子类中只要存在构造器就会报错(子类默认存在的无参构造器也会报错哦)。
父类存在无参构造器且有无参构造器时,子类可以只存在有参构造,在调用子类有参构造器时,会先调用父类的无参构造器。
子类在实例化对象时,根据参数列表选择合适的构造函数进行初始化,子类的任何构造器被调用时都要先调用父类的无参构造函数(因为这是前提)
this();//无参的自身构造器调用,只能存在于有参构造函数的第一行;
this("name"); //有参的自身构造函数的调用,只能存在于无参构造函数的第一行;
super();和super("canshu");非常不好意思,若在父类中只存在有参构造函数,你仍可以在子类的有参构造器或无参构造器中通过调用super("canshu")(也就是有参父类构造函数的调用)来实现程序,此时就不依赖父类的无参构造器了,但是因为没有父类无参构造器,所以你的程序中不能存在父类的无参构造函数的调用super()。所以说上几条所说也有例外
this();super();只能存在于构造方法的第一行,所以不能同时存在。
版权声明:本文为weixin_43937233原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。