JAVA类初始化顺序,经典例程
2008-02-23 09:26:16来源:互联网 阅读 ()
package c06;
import Java.util.*;
public class ClassOrderTest {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
new ClassB().display();
new ClassB().dispA();
System.gc();
}
}
class ClassA{
{
int x=100,y=getNumber(100);
System.out.println("ClassA.init block:x=" x ":y=" y);
}
static{
int sx=100,sy=getNumber(100);
System.out.println("ClassA.static block:sx=" sx ":sy=" sy);
}
int ix=(int)(Math.random()*100);
final int iy=(int)(Math.random()*100);
static int iz=getNumber(100);
int ax=getNumber(100);
static void dispA(){
System.out.println("ClassA.dispA()");
}
static int getNumber(int base){
System.out.println("ClassA.getNumber(int base)");
return (int)(Math.random()*base);
}
void display(){
System.out.println("ix=" this.ix);
System.out.println("iy=" this.iy);
System.out.println("iz=" this.iz);
System.out.println("ax=" this.ax);
dispA();
}
ClassA(){
System.out.println("ClassA.constructor");
}
protected void finalize(){
System.out.println("ClassA.destructor");
}
}
class ClassB extends ClassA{
static{
System.out.println("ClassB.static block");
}
protected void finalize() {
System.out.println("ClassB.destructor");
super.finalize();
}
{
int bx=100;
System.out.println("ClassB.init block:bx=" bx);
}
ClassB(){
super();
System.out.println("ClassB.Constructor");
}
}
/*
* 运行结果
ClassA.getNumber(int base)
ClassA.static block:sx=100:sy=54
ClassA.getNumber(int base)
ClassB.static block
ClassA.getNumber(int base)
ClassA.init block:x=100:y=74
ClassA.getNumber(int base)
ClassA.constructor
ClassB.init block:bx=100
ClassB.Constructor
ix=78
iy=78
iz=52
ax=82
ClassA.dispA()
ClassA.getNumber(int base)
ClassA.init block:x=100:y=88
ClassA.getNumber(int base)
ClassA.constructor
ClassB.init block:bx=100
ClassB.Constructor
ClassA.dispA()
ClassB.destructor
ClassA.destructor
ClassB.destructor
ClassA.destructor
总结:
1、类只有在使用New调用创建的时候才会被JAVA类装载器装入
2、JAVA类首次装入时,会对静态成员变量或方法进行一次初始化
3、创建类实例时,首先按照父子继承关系进行初始化
4、类实例创建时候,首先初始化块部分先执行,然后是构造方法;然后从
本类继承的子类的初始化块执行,最后是子类的构造方法
5、类消除时候,首先消除子类部分,再消除父类部分
*/
上一篇: 2005Java中国开发者大会即将举行 精英云集
下一篇: 在oracle中发布java程序
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:一个应届毕业生的求职历程及感悟
下一篇:哪些类的白领最容易下岗
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash