码迷,mamicode.com
首页 > 其他好文 > 详细

父类,子类,静态属性,静态代码块,构造代码块,构造函数,执行顺序

时间:2017-09-10 18:52:11      阅读:177      评论:0      收藏:0      [点我收藏+]

标签:类加载   函数   logs   静态   sys   构造器   相同   style   void   

 1 package demo;
 2 //父类
 3 public class FatherClass {
 4 
 5     private static String  strFather="父类静态属性----1";
 6     
 7     static{
 8         System.out.println("父类静态代码块----1");
 9     }
10     
11     {
12         System.out.println("父类构造代码块----3");
13     }
14     
15     public FatherClass(){
16         System.out.println("父类构造器----4"); 
17     }
18 }
 1 package demo;
 2 //子类
 3 public class ChildClass extends FatherClass{
 4 
 5     private static String  childFather="子类静态属性----2";
 6     
 7     static{
 8         System.out.println("子类静态代码块----2");
 9     }
10     
11     {
12         System.out.println("子类构造代码块----5");
13     }
14     
15     public ChildClass(){
16         System.out.println("子类构造器----6");
17     }
18 }
 1 package demo;
 2 
 3 public class ShunXu {
 4 /**
 5  * 父类,静态属性,静态代码块,构造代码块,构造函数,
 6  * 子类,静态属性,静态代码块,构造代码块,构造函数
 7  * 的执行顺序
 8  */
 9     public static void main(String[] args) {
10         ChildClass child = new ChildClass();
11     }
12 /**
13  * 父类静态代码块----1
14  * 子类静态代码块----2
15  * 父类构造代码块----3
16  * 父类构造器----4
17  * 子类构造代码块----5
18  * 子类构造器----6
19  */
20 }

分析结果可以得到如下加载执行顺序结论:

  1.加载父类的静态属性和静态代码块。

  2.加载子类的静态属性和静态代码块。

  3.加载父类的非静态属性和非静态代码块。

  4.加载父类的构造方法。

  5.加载子类的非静态属性和非静态代码块。

  6.加载子类的构造方法。

  注:

  1.静态属性和静态代码块是在类加载的时候就加载执行,执行顺序与代码顺序相同。

  2.非静态属性和非静态代码块是在类创建实例的时候执行,优先于构造方法,执行顺序与代码顺序相同。

 

父类,子类,静态属性,静态代码块,构造代码块,构造函数,执行顺序

标签:类加载   函数   logs   静态   sys   构造器   相同   style   void   

原文地址:http://www.cnblogs.com/tashaxing/p/7501623.html

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