Java中关于子类调用父类无参还是有参构造方法的各个类型
1.子类和父类都定义了带参和无参构造方法,且在子类中第一行写了super(xx);并且测试类里面实例化的是子类的带参构造方法,那么,此时不会先调用父类的无参构造方法,而是先调用父类有参构造方法再调用子类的有参构造方法;
下面上代码和结果:
结果是:
2.2、子类和父类同时具有有参和无参的构造方法,子类有参构造方法中第一行写的没有super.(xx),且子类实例化时用的是有参构造方法,那么此时会先调用父类的无参构造方法,再调用子类的有参构造方法;
代码还是相同,只是去掉子类中的super(xx);
结果:
3.子类和父类同时具有有参和无参的构造方法,子类无参构造方法中第一行写的有super.(),且子类实例化时用的是无参构造方法,那么此时先调用父类的无参构造方法再调用子类的无参构造方法;
代码相同,子类无参构造方法中添加super(xx);同时用无参构造来实例化子类
结果:
4.子类和父类同时具有有参和无参的构造方法,子类无参构造方法中第一行写的没有super.(),且子类实例化时用的是无参构造方法,那么此时会先调用父类的无参构造方法,再调用子类的无参构造方法;
代码相同,子类无参构造方法中删除super();同时使用无参构造方法实例化子类
结果:
5.父类具有有参和无参的构造方法,但子类只有有参且第一行写的没有super.,那么子类实例化时会先调用父类的无参构造方法,再调用子类的有参构造方法;
结果:
6.父类具有有参和无参的构造方法,但子类只有无参且第一行写的没有super.,那么子类实例化时会先调用父类的无参构造方法,再调用子类的无参构造方法;
结果:
7.父类具有有参和无参的构造方法,但子类只有有参构造方法且第一行写的有super.,那么子类实例化时先调用父类的有参构造方法,再调用子类的有参构造方法;
结果:
8.父类具有有参和无参的构造方法,但子类只有无参构造方法且第一行写的有super.,那么子类实例化时先调用父类的无参构造方法,再调用子类的无参构造方法;
结果:
9.假如父类只有有参构造方法,子类也只有有参构造方法,那么子类的有参构造方法中必须写super.xx,不然编译会不通过。
自己试过了的,应该没错,出错了希望大家告诉我