Java在继承中构造器的调用顺序

   Java中子类继承父类时代码结构初始化以及调用的顺序:

   子类声明一个对象时,

    步骤1: 这时先调用的是基类的静态初始化块,然后是下一层的子类,一直到声明对象的类的静态初始化块。从这里就开始内存分配与初始化了。先有类才有对象。

    步骤2:new Wolf(5.6) 这句话先调用的是Wolf的构造函数,但是它并没有执行,而是去调用父类的构造函数,一层层往上,直到基类,这就像栈一样,先压进去,一会再一个个弹出来执行,在执行基类的构造函数之前,先必须执行非静态初始化块,执行完成后才会去执行构造函数,执行完后,会跳往刚才下一层的子类,调用刚才压进栈的构造函数,但是运行之前一样先运行非静态初始化块,包括在内存中分配空间以及赋值,直到压进栈的都弹出来执行完成后这个过程就结束了。

    需要注意的是子类可以通过在构造函数中使用super调用父类的相同类型的构造器,如果没有,那么默认的是调用父类的无参构造函数。

package cn.swpu;

class Creature
{
	
	{
		System.out.println("Creature的非静态初始化块");
	}
	static{
		System.out.println("我是最先运行的");
	}
	public Creature(){
		System.out.println("Creature无参数的构造器");
	}
	public Creature(String name)
	{
		this();
		System.out.println("Creature带有name参数的构造器,name参数:"+nam
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值