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、类消除时候,首先消除子类部分,再消除父类部分*/
闽公网安备 35060202000074号