您的位置:首页 > 编程语言

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

2017-09-10 17:33 405 查看
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.非静态属性和非静态代码块是在类创建实例的时候执行,优先于构造方法,执行顺序与代码顺序相同。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐