-
父类中存在无参构造函数,是子类存在构造函数的前提,如果父类中不存在无参构造器(由于类会默认存在一个无参构造器,此时的情况指的是父类存在有参构造器而没有显式的写出无参构造器),子类中只要存在构造器就会报错(子类默认存在的无参构造器也会报错哦)。
-
父类存在无参构造器且有无参构造器时,子类可以只存在有参构造,在调用子类有参构造器时,会先调用父类的无参构造器。
-
子类在实例化对象时,根据参数列表选择合适的构造函数进行初始化,子类的任何构造器被调用时都要先调用父类的无参构造函数(因为这是前提)
-
this();//无参的自身构造器调用,只能存在于有参构造函数的第一行;
-
this("name"); //有参的自身构造函数的调用,只能存在于无参构造函数的第一行;
-
super();和super("canshu");非常不好意思,若在父类中只存在有参构造函数,你仍可以在子类的有参构造器或无参构造器中通过调用super("canshu")(也就是有参父类构造函数的调用)来实现程序,此时就不依赖父类的无参构造器了,但是因为没有父类无参构造器,所以你的程序中不能存在父类的无参构造函数的调用super()。所以说上几条所说也有例外
-
this();super();只能存在于构造方法的第一行,所以不能同时存在。
关于Java父类与子类的构造器问题 的个人理解
最新推荐文章于 2024-05-25 15:17:57 发布
本文探讨了Java中父类构造器与子类构造器的关系。当父类有无参构造器时,子类可以自由定义构造器;反之,如果父类只有有参构造器,子类必须在构造器中通过super()调用来初始化父类。子类构造器在实例化时总是先调用父类的无参构造器。此外,this()和super()调用只能出现在构造器的第一行,且不能同时存在。
摘要由CSDN通过智能技术生成