java类定义的顺序_Java类及对象的初始化顺序

1.初始化规则:

下面规则优先级从前往后依次降低

0.加载一个类时先初始化基类后初始化扩展类;

1.类的初始化高于对象的初始化;

类的初始化依靠静态代码(被static标识的),静态代码块、静态变量这些用于初始化类的成员只会被加载执行一次;

对象的初始化依靠对象成员变量、代码块、构造方法,这些在对象每次被创建时都要执行一次;

2.变量声明执行优先级高于代码块执行,代码块高于构造函数;

3.声明顺序和执行顺序一致;

2.测试性代码

public class DemoTest {

public static void main(String[] args) throws ClassNotFoundException {

DemoBase obj1 = new DemoBaseExtends();

DemoBase obj2 = new DemoBaseExtends();

obj1.toString();

obj2.toString();

}

}

class DemoBase{

static{

System.out.println("DemoBase static called1");

i = 1;

}

{

System.out.println("DemoBase object called1");

}

public DemoBase() {

System.out.println("DemoBase constu called");

}

{

System.out.println("DemoBase object called2");

}

static{

System.out.println("DemoBase static called2");

i = 1;

}

static final String str = "qwer";

static int i;

}

class DemoBaseExtends extends DemoBase{

String name = null;

static{

System.out.println("DemoBaseExtends static called1");

}

{

System.out.println("DemoBaseExtends Object called1");

name = "DemoBaseExtends";

}

public DemoBaseExtends() {

super();

System.out.println("DemoBaseExtends constu called");

}

{

System.out.println("DemoBaseExtends Object called2");

}

static{

System.out.println("DemoBaseExtends static called2");

}

}

/**

DemoBase static called1

DemoBase static called2

DemoBaseExtends static called1

DemoBaseExtends static called2

DemoBase object called1

DemoBase object called2

DemoBase constu called

DemoBaseExtends Object called1

DemoBaseExtends Object called2

DemoBaseExtends constu called

DemoBase object called1

DemoBase object called2

DemoBase constu called

DemoBaseExtends Object called1

DemoBaseExtends Object called2

DemoBaseExtends constu called

*/

3.汇总

基类静态变量(按声明顺序)=》

基类静态代码块(按声明顺序)=》

扩展类静态变量(按声明顺序)=》

扩展类静态代码块(按声明顺序)=》

基类实例变量(按声明顺序)=》

基类实例代码块(按声明顺序)=》

基类构造函数(按调用顺序)=》

扩展类实例变量(按声明顺序)=》

扩展类实例代码块(按声明顺序)=》

扩展类构造函数(按调用顺序)

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值