1.静态变量
2.静态代码块
3.局部代码块
4.构造函数
5.普通代码块
6.静态方法
7.普通方法
8.普通属性
for example:
package com.JavaTest2;
public class Test extends Test2 {
public String j = "子类变量";
public static String i = "子类静态变量";
static {
System.out.println("子类静态代码块");
System.out.println(Test.i);
}
{
System.out.println("子类普通代码块");
System.out.println(this.j);
}
public Test() {
System.out.println("子类构造方法");
{
System.out.println("子类构造代码块");
}
}
public void test() {
System.out.println("子类普通方法");
}
public static void test1() {
System.out.println("子类静态方法");
}
public static void main(String[] args) {
Test test = new Test();
//test.test();
//Test.test1();
}
}
class Test2 {
public String j = "父类的变量";
public static String i = "父类静态变量";
static {
System.out.println(Test2.i);
System.out.println("父类静态代码块");
}
{
System.out.println("父类普通代码块");
System.out.println(this.j);
}
public Test2() {
System.out.println("父类构造方法");
{
System.out.println("父类构造代码块");
}
}
public void test() {
System.out.println("父类普通方法");
}
public static void test1() {
System.out.println("父类静态方法");
}
}
打印结果:
父类静态变量
父类静态代码块
子类静态代码块
子类静态变量
父类普通代码块
父类的变量
父类构造方法
父类构造代码块
子类普通代码块
子类变量
子类构造方法
子类构造代码块
总结:
1.(静态变量和静态代码块)和(普通代码块和成员变量)看编写的顺序加载 如果静态代码块先加载然后打印静态变量会打印null.普通代码块同理。
2.局部代码块和局部变量按编写顺序加载,构造代码块同理。
2.子类和父类的方法只有调用才加载。