//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變數的初始化和訪問;建構函式的使用 * */ |