//Insect.class package test; class Insect { int i = 9; int h=y1; static int y1=8; int j; Insect() { prt("i = " + i + ", j = " + j); j = 39; } static int x1 = prt("static Insect.x1 initialized"); static int prt(String s) { System.out.println(s); return 47; } } //Beetle.class public class Beetle extends Insect { int k = prt("Beetle.k initialized"); Beetle() { prt("k = " + k); prt("j = " + j); } static int x2 = prt("static Beetle.x2 initialized"); public static void main(String[] args) { prt("Beetle constructor"); Beetle b = new Beetle(); } } /* 1。首先试着访问Beetle.main() 这是一个静态方法。 * 2。到外面去找到为Beetle类编译好的代码Beetle.class * 3。装载Beetle.class过程中发现Beetle有基类。 * 4。初始化基类 * 1)先初始化static * 2)然后按文字顺序继续初始化普通变量 * 5。初始化派生类 * 1)先初始化static * 2)然后按文字顺序继续初始化普通变量 * 6。执行main里的主体程序(按文字顺序执行) * 1)prt("Beetle constructor"); * 2)实例化一个派生类(Beetle b = new Beetle();) * 1)基类构造函数 * 2)派生类构造函数 * * 考点:static变量的初始化和访问;构造函数的使用 * */ |