OOM

Stay Hungry,Stay Foolish.

java初始化顺序

1. 父类静态成员和静态初始化块 ,按在代码中出现的顺序依次执行
2. 子类静态成员和静态初始化块 ,按在代码中出现的顺序依次执行
3. 父类实例成员和实例初始化块 ,按在代码中出现的顺序依次执行
4. 父类构造方法
5. 子类实例成员和实例初始化块 ,按在代码中出现的顺序依次执行
6. 子类构造方法

 

public abstract class Base { 
//5、初始化父类的非静态代码 
public int age = getNumber(100); 
// 静态成员变量和静态初始化块级别相同 所以按照在代码中的顺序依次执行 
// 1、初始化父 静态成员变量 static int sage 
static int sage = getNumber(50); 
// 2、初始化父 静态初始化块 static 
static { 
System.out.println("base static block"); 
} 
{ 
System.out.println("base nonstatic block"); 
} 
//6、初始化父类构造函数 
Base() 

{ 
System.out.println(age); 
System.out.println("base start"); 
draw();// 会调用子类覆盖后的方法 
System.out.println("base end"); 

} 

static int getNumber(int base) { 
System.out.println("base.getNumber int" + base); 
return base; 
} 

public void draw() { 
System.out.println("base.draw"); 
} 

} 


public class InitializeOrder extends Base { 
//7、初始化子类的非静态代码 
public int age = getNumber(1001); 
//8、初始化子类的非静态代码 
private int _radius = getNumber(10); 
//3、初始化子 静态成员变量 static int sage 
static int sage = getNumber(250); 
//4、初始化子 静态初始化块 static 
static { 
System.out.println("subclass static block"); 
} 
{ 
System.out.println("subclass nonstatic block"); 
} 
//9、初始化子类构造函数 
InitializeOrder(int radius) { 
_radius = radius; 
System.out.println(age); 
System.out.println("initializeOrder initialized"); 
} 

public void draw() { 
System.out.println("initializeOrder.draw " + _radius); 
} 

/** */ 
/** 
* @param args 
*/ 
public static void main(String[] args) { 

    new InitializeOrder(1000); 
   } 

} 


 

阅读更多
文章标签: java class string
个人分类: java
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

java初始化顺序

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭