父类与子类的构造顺序

本文通过代码实例详细解析了Java中父类与子类构造器的执行顺序,解释了子类继承父类属性及构造过程,并提供了一个实践示例帮助理解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天有人问我父类跟子类的构造顺序问题,写了个例子,姑且记一下

直接上代码吧

先是父类:

package cn.extend;

public class Parent {
	 String name;
	 int age;
	 static String sex;

	public Parent() {
		System.out.println("Praent constructor is excuting");
		// TODO Auto-generated constructor stub
		this.name="Parent";
		this.sex="female";
	}
	
	public void test(){
		System.out.println("Praent's method test is excuting");
	}
}

再是子类:

package cn.extend;


public class Son extends Parent {
public Son() {
// TODO Auto-generated constructor stub
System.out.println("Son constructor is excuting");
// this.name="Son";
// this.sex="male";

}
@Override
public void test() {
// TODO Auto-generated method stub
System.out.println("Son's method test is excuting");
}
/**
* add by liuchg
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
        Son son= new Son();
        son.test();
        System.out.println(son.name);
        System.out.println(son.sex);
}
}

结果:

Praent constructor is excuting
Son constructor is excuting
Son's method test is excuting
Parent
female

说明在创建子类对象时,先调用父类的构造器,再调用子类的构造器;

将标红的代码去掉注释,执行结果如下:

Praent constructor is excuting
Son constructor is excuting
Son's method test is excuting
Son
male

子类继承父类,是把父类属性(public或者默认权限的、protected)继承下来,然后调用父类的构造函数来初始化这些属性,直致所有这些继承下来属性都初始化完毕,注:protected必须是在同一个包下。初始化顺序如下:

1.初始化父类 static 成员。
2.初始化子类 static 成员。
3.初始化父类非 static 成员。
4.初始化子类非 static 成员。
5.调用父类 构造器
6.调用子类 构造器

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值