php中继承过来的类初始化顺序,java_图文详解Java中class的初始化顺序,class的装载 在讲class的初始化 - phpStudy...

图文详解Java中class的初始化顺序

class的装载

在讲class的初始化之前,我们来讲解下class的装载顺序。

以下摘自《Thinking in Java 4》

由于Java 中的一切东西都是对象,所以许多活动

变得更加简单,这个问题便是其中的一例。正如下一章会讲到的那样,每个对象的代码都存在于独立的文件中。除非真的需要代码,否则那个文件是不会载入的。通常,我们可认为除非那个类的一个对象构造完毕,否则代码不会真的载入。由于static 方法存在一些细微的歧义,所以也能认为“类代码在首次使用的时候载入”。

首次使用的地方也是static 初始化发生的地方。装载的时候,所有static 对象和static 代码块都会按照本来的顺序初始化(亦即它们在类定义代码里写入的顺序)。当然,static 数据只会初始化一次。

简要的说就是,在类有继承关系时,类加载器上溯造型,进行相关类的加载工作。

比如:

Class B extends Class A

当我们new B()时,类加载器自动加载A的代码

class的初始化顺序

通常是以下这样的初始化顺序:

(static对象和static代码块,依据他们的顺序进行初始化)>成员变量>构造函数

测试代码

public class ClassInit {

/**

* @Title: main

* @Description: 类初始化顺序测试

* @param: @param args

* @return: void

* @throws

*/

public static void main(String[] args) {

// TODO Auto-generated method stub

new B();

}

}

class A {

static{

System.out.println("A的static代码块...");

}

public String s1 = prtString("A的成员变量...");

public static String s2 = prtString("A的static变量...");

public A(){

System.out.println("A的构造函数...");

}

public static String prtString(String str) {

System.out.println(str);

return null;

}

}

class B extends A{

public String ss1 = prtString("B的成员变量...");

public static String ss2 = prtString("B的static变量...");

public B(){

System.out.println("B的构造函数...");

}

private static A a = new A();

static{

System.out.println("B的static代码块...");

}

{

System.out.println("代码块...");

}

}

测试结果

A的static代码块...

A的static变量...

B的static变量...

A的成员变量...

A的构造函数...

B的static代码块...

A的成员变量...

A的构造函数...

B的成员变量...

代码块...

B的构造函数...

总结

以上就是Java中class的初始化顺序的全部内容,希望对大家使用Java能有所帮助。相关阅读:

浅析php中jsonp的跨域实例

JS+CSS实现可以凹陷显示选中单元格的方法

Win10文件检查器怎么检查修复系统的受损文件?

苹果Mac OS X 10.10 Yosemite系统十大使用技巧汇总

jquery实现界面无刷新加载登陆注册

IE6下position fixed失效的解决方法(亲测有效)

js运动应用实例解析

Win10进入倒计时 Win8必升Win10新系统的理由

详解Android中的Menu菜单键

win10不能设置宽带dns该怎么办?win10修改DNS的两种教程

WebApi+Bootstrap+KnockoutJs打造单页面程序

Windows7系统电脑出现蓝屏该怎么处理?

SQL Server 2016正式版安装配置过程图文详解

C#实现IP摄像头的方法

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值