- 子类中的构造函数默认都是走的都是父类中无参构造函数,子类中的所有构造函数中默认第一行都是super( ),当然这个super()是隐式的,要想执行父类中有参数的构造函数,就得在子类中的第一行加上super(x),传个参数进去,这次就不能用隐式的了,要想调用父类有参构造函数,子类就得把super(x)写上并传参,不能藏着了再。Super语句必须写在子类构造函数中的 第一行
- class Father{
- Father(){
- System.out.println("Father-------");
- }
- Father(int x){
- System.out.println("Father-------"+x);
- }
- }
- class Child extends Father{
-
- Child(){
- //隐藏了super();
- System.out.println("Child-------");
- }
-
- Child(int x){
- //隐藏了super();
- super(x);//调用有参数的构造函数
- System.out.println("Child-------"+x);
- }
-
- }
- public class TestExtends4 {
- public static void main(String[] args) {
- Child c1 = new Child();//对象c1走的是父类的无参数的构造函数
- Child c2 = new Child(7);//对象c2走的也是父类的午餐的构造函数
-
- }
- }
复制代码 |