类中包含7中成员:
1、静态变量 static
2、final静态常量 final static
3、静态代码块 static{}  //多个代码块顺序执行

4、普通变量
5、普通代码块 {}  //多个代码块顺序执行

6、构造方法

7、普通方法



类中成员初始化方式(排出7):

非继承类中:
    首先执行1/2/3,执行顺序为顺序执行(谁在前先执行谁)。
    之后执行4/5,执行顺序为顺序执行(谁在前先执行谁)。
    然后执行6(默认执行无参构造方法)。
    
继承类中:
    首先执行父类1/2/3,执行顺序为顺序执行(谁在前先执行谁),
    随即执行子类1/2/3,执行顺序为顺序执行(谁在前先执行谁)。
    
    之后执行父类4/5,执行顺序为顺序执行(谁在前先执行谁),
    然后执行父类6(如果子类没有调用父类构造方法,则默认调用父类默认无参构造方法)。
    
    随即执行子类4/5,执行顺序为顺序执行(谁在前先执行谁)。
    
    然后执行子类6。
   

代码:

* 每个属性设置断点,启动后可以观察执行顺序。

父类:

 1 package com.lookcoder.haircutmember.vo;
 2 
 3 public class TRoleVoAFather {
 4     private String nameFather = "12";
 5     private Integer ageFather = 1;
 6     private int ageiFather = 1;
 7     {
 8         System.out.println("father defualt method block2");
 9     }
10     private String defualtInitFather = getDefaultInit();
11     {
12         System.out.println("father defualt method block1");
13     }
14     private String getDefaultInit() {
15         return "father default init";
16     }
17     // ----------------------------------------------------------------------------
18     private static String aFather = "2";
19     private final static String aaFather = getFinalStatic();
20     static {
21         System.out.println("father default static method2");
22     }
23     private static Integer bFather = 1;
24     static {
25         System.out.println("father default static method1");
26     }
27     private final static Integer bbFather = 2;
28     private static String getFinalStatic() {
29         return "father final static aa";
30     }
31     private final static Boolean bo = true;
32     // ----------------------------------------------------------------------------
33     TRoleVoAFather() {
34         System.out.println("father default construct");
35     }
36     TRoleVoAFather(String name, Integer age) {
37         this.nameFather = name;
38         this.ageFather = age;
39     }
40     // ----------------------------------------------------------------------------
41     public void abc() {
42         System.out.println("abc method!");
43     }
44 }
View Code

相关文章: