java对象实例化过程中的代码执行顺序

java对象实例化过程中的代码执行顺序

1、执行顺序

(1)父类静态的内容---->子类的静态的内容;
(2)初始化父类的成员变量初始化--->父类的非静态语句块--->父类的构造方法。
(3)初始化子类的成员变量初始化--->子类的非静态语句块--->执行子类的构造方法。

2、例证

(1)Base.java

public class Base{
	
	public String whenAmISet = "set when declared in parent class";
	
    Base() {
    	System.out.println("4 parent Constructor , it will invoke    
    	                    preProcess() from child class.");
        preProcess(); //调用子类的preProcess;
    }
 
    void preProcess() {}
    //静态语句块
    static {
    	System.out.println("1 parent static block ");	
    }
    //非静态语句块
    {
    	System.out.println("3 parent dynamic block , after 
    	           initialized filed from parent class,");
    }
}

(2)Derived.java

public class Derived extends Base
{
    public String whenAmISet = "set when declared";
 
    @Override void preProcess()
    {
        whenAmISet = "set in preProcess()";
    }
    
    Derived() {
    	System.out.println("6 child constructor ");
    }
    
    static {
    	
    	System.out.println("2 child static block");
    }
   
    {
    	System.out.println("5 child dynamic block  , after 
    	             initialized filed from child class.");
    }    
}

(3)Main.java

public class Main
{
    public static void main(String[] args)
    {
        Derived d = new Derived();
        System.out.println( d.whenAmISet );
    }
}

输出:
1 parent static block
2 child static block
3 parent dynamic block , after initialized filed from parent class,
4 parent Constructor , it will invoke preProcess() from child class.
5 child dynamic block , after initialized filed from child class.
6 child constructor
set when declared

提示:想观察执行顺序,可在eclipse选用debug模式,在每行代码输出处打断点观察执行顺序。

参考资料:
(1)Java 静态语句块、语句块、构造函数执行顺序
http://www.cnblogs.com/jycboy/p/5257615.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值