package lhm.test;
/**
* @author lenovo
*
*/
public class Person {
private int id;
private static int total = 0;
/**
*
*/
public Person() {
// TODO Auto-generated constructor stub
System.out.println("person构造方法");
total++;
id = total;
}
static{
System.out.println("这是Person的static语句块");
}
{
System.out.println("这是Person的初始语句块");
}
public int getId(){
return id;
}
}
/**
*
*/
package lhm.test;
/**
* @author lenovo
*
*/
public class TestStatic extends Person{
/**
*
*/
public TestStatic() {
// TODO Auto-generated constructor stub
System.out.println("Teststatic的构造方法");
}
{
System.out.println("这是TestStatic的初始语句块");
}
static{
System.out.println("这是TestStatic的static语句块");
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
TestStatic ts = new TestStatic();
//Person p = new Person();
//Person p1 = new Person();
//System.out.println(p.getId());
//System.out.println(p1.getId());
}
}
最后结果为:
这是Person的static语句块
这是TestStatic的static语句块
这是Person的初始语句块
person构造方法
这是TestStatic的初始语句块
Teststatic的构造方法
static语句最先执行,执行时机是:该类所有static属性已被分配空间,默认初始化和显示初始化之后,在执行任何代码之前。
初始语句是在执行其他方法体之前,在对象分配空间及实例变量默认和显示初始化之后。