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); 
   } 

} 


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值