码迷,mamicode.com
首页 > 编程语言 > 详细

Java Object 构造方法的执行顺序

时间:2016-08-27 06:21:06      阅读:169      评论:0      收藏:0      [点我收藏+]

标签:

Java Object 构造方法的执行顺序

@author ixenos 

 

 

 

为了使用类而做的准备工作包括三个步骤


1)加载类加载器查找字节码(一般在classpath中找),从字节码创建一个Class对象

2)链接:验证字节码,为静态域(只是static修饰的域,不包含static final )分配存储空间,解析此类对其他类的所有引用

3)初始化:若该类有超类,对其初始化,执行静态初始化器(构造器算一个)和静态初始化块

 

类初始化时构造方法执行顺序


对于某一个子类时:

 (1)初始化对象的存储空间为零或null值;

 (2)调用父类构造函数无显式调用super(...)时,默认隐式调用super(),否则调用super(...)

 (3)按顺序分别调用类成员变量和实例成员变量的初始化表达式;

 (4)调用本身构造函数

 1 public class Dollar extends Money{
 2      Rmb r=new Rmb();
 3     
 4      public Dollar(){
 5       
 6       System.out.println("Dollar is construct!");
 7     
 8      }
 9      public static void main(String[] args){
10       
11       new Dollar();
12       
13      }
14 }
15 class Money{
16  public Money(){
17   System.out.println("Money is construct");
18  }
19 }
20 class Rmb{
21  public Rmb(){
22   System.out.println("RMB is construct");
23  }
24 }
25 
26 
27 /*
28 输出结果:
29 Money is construct
30 RMB is construct
31 Dollar is construct!
32 */

 

 

实例化某一个类的对象的时,块和构造器的相对运行顺序


 (1)父类静态块

 (2)子类静态块

 (3)父类块

 (4)父类构造器

 (5)子类块

 (6)子类构造器 

 

 1 public class Dog {   
 2    public Dog() {   
 3      System.out.println("Dog");   
 4     }   
 5     static{   //静态块
 6         System.out.println("super static block");   
 7     }       
 8   {   
 9         System.out.println("super block");   
10     }   
11 }  
12  public class Mastiff extends Dog {   
13     public Mastiff() {   
14         System.out.println("Mastiff");   
15     }   
16      {   
17         System.out.println("block");   
18        }   
19    static {   
20       System.out.println("static block");   
21  }   
22   public static void  main(String[] args){   
23       Mastiff mastiff=new Mastiff();         //实例化一个对象
24     }   
25 } 
26 
27 
28 /*
29 输出结果:
30 super static block
31 static block
32 super block
33 Dog
34 block
35 Mastiff
36 */

 

部分参考http://blog.sina.com.cn/s/blog_6caeccff0100q5wz.html

Java Object 构造方法的执行顺序

标签:

原文地址:http://www.cnblogs.com/ixenos/p/5812121.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!