java无参继承_Java中的有参无参构造方法与继承的关系

public class Father {

//年龄

private int age;

//仅有一个带参数的构造方法

public Father (int i){

this.age = i;

System.out.println("实例化父类 ag = " + age);

}

public Father() {

System.out.println("这是父类的无参的构造方法");

// TODO Auto-generated constructor stub

}

//main方法

public static void main (String [] args) {

//实例化对象时必须指定参数以运行对应的构造方法实例(构造)对象

Father fa = new Father(40);

Father fa1 = new Father(50);

Father fa2 =new Father();

}

}

实例化父类 ag = 40

实例化父类 ag = 50

这是父类的无参的构造方法

public class Son extends Father{

private int age;

//子类构造方法——必须先显式调用父类构造方法

public Son(int i) {

super(i);//必须先调用父类的构造方法,然后才能写子类构造方法的其他逻辑 可以注释掉这句看运行结果

this.age = i - 20;

System.out.println("实例化子类 age = " + age);

}

public Son() {

super(); //可以注释掉这句然后看运行结果

System.out.println("这是子类的无参构造方法");

}

//main方法

public static void main (String [] args) {

//实例化子类Son

Son so = new Son(40);

Son so1 = new Son(50);

Son so2 =new Son();

}

}

实例化父类 ag = 40

实例化子类 age = 20

实例化父类 ag = 50

实例化子类 age = 30

这是父类的无参的构造方法

这是子类的无参构造方法

当子类想继承父类时,父类必须有无参的构造方法,如果不主动添加系统会默认添加一个无参的构造方法,此时子类可以顺利继承父类

但是当父类添加了一个带参的构造方法时,此时系统将不会再默认添加无参的构造方法,所以此时必须自己手动添加一个无参的构造方法,这样才能保证被子类顺利的继承

在实例化子类的时候会自动的实例化父类,如果此时的父类还继承了其他的类,那么便会逐级的向上查询,知道找到顶级的父类,然后开始逐个的实例化,在实例化的同时

便会自动调用无参的构造方法,但是如果想要调用父类的带参的构造方法,此时就必须通过super(i)进行调用


版权声明:本文为weixin_39924481原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。