Java类被加载时执行的顺序问题
来源:互联网 发布:大数据立法现状 编辑:程序博客网 时间:2024/06/05 05:23
public class Parent
{
//1
static int a = 1;
//2
static
{
a = 10;
System.out.println("parent static code");
}
//4
public Parent()
{
System.out.println("Parent constructor");
System.out.println("Parent a=" + a);
}
public static void main(String[] args)
{
System.out.println("***************");
Parent c = new Child();
}
}
class Child extends Parent
{
static int a = 2;
//3
static
{
a = 20;
System.out.println("child static code");
}
//5
public Child()
{
System.out.println("Child constructor");
System.out.println("Child var a=" + a);
}
}
执行结果:
run:
parent static code
***************
child static code
Parent constructor
Parent a=10
Child constructor
Child var a=20
BUILD SUCCESSFUL (total time: 0 seconds)
Java 语言是动态链接的,只有在需要的时候才去加载java类,在加载java类的时候,首先执行类里面的static代码块,然后进入main入口函数,调用子类的构造函数,生成子类的对象,子类被加载,调用子类的static代码块,然后开始调用子类的构造函数,调用之前要是检查到父类还没实例化,前去调用父类的构造函数,保证父类实例化完毕了再去调用子类的构造函数,在子类构造函数中第一句可以用super()调用父类的构造函数感觉像是重新实例化了一个对象!
现在将程序的入口从父类中转移到子类中,我们再看一下输出的执行流程。。。
class Parent
{
//1
static int a = 1;
//2
static
{
a = 10;
System.out.println("parent static code");
}
//4
public Parent()
{
System.out.println("Parent constructor");
System.out.println("Parent a=" + a);
}
}
public class Child extends Parent
{
static int a = 2;
//3
static
{
a = 20;
System.out.println("child static code");
}
//5
public Child()
{
System.out.println("Child constructor");
System.out.println("Child var a=" + a);
}
public static void main(String[] args)
{
System.out.println("***************");
Parent c = new Child();
}
}
执行结果:
run:
parent static code
child static code
***************
Parent constructor
Parent a=10
Child constructor
Child var a=20
BUILD SUCCESSFUL (total time: 0 seconds)
由此可以知道,我们在要加载拥有入口函数的子类之前,是要首先加载这个函数的父类的。。。。。
- Java类被加载时执行的顺序问题
- Java类被加载时执行的顺序问题
- Java中类加载的执行顺序
- Java--类加载时执行方法顺序
- Java 类加载执行顺序
- java中的类的执行顺序问题
- 类的加载、执行顺序
- java中类的加载,及执行顺序
- java中类的加载,及执行顺序
- java中类的加载和执行顺序
- java中类的加载,及执行顺序
- java中类的加载,及执行顺序【转】
- Java中类的加载顺序执行结果
- java中类加载和执行顺序
- Java继承之间类的加载顺序, 以及代码块、构造块的执行顺序
- 页面加载时page类中事件的执行顺序
- JAVA执行顺序问题
- java中运行时执行顺序和测试类加载顺序
- RHCE认证视频汇总贴(5月17日更新中……)
- 这个视频下载器挺好,狸窝网络视频下载器
- Masson快速视频制作教程(02) - 音视频的基础知识
- 最近工作
- delete[] 和 delete
- Java类被加载时执行的顺序问题
- PlaySound函数使用技巧
- httpwatch不错
- 嵌入式系统启动常见问题与解决方案备忘录
- windows NFS 配置
- Ruby On Rails登陆页面示例
- eclipse的.properties文件支持中文显示
- ACE的UDP多播和广播
- centOS 5 flash 插件