package 類的初始化;
/** * 父類的初始化* (1)j = method(); 5
* (2)父類的靜態**塊 1
* * 父類的例項初始化:
* (1) super() (最前)
* (2) i = test();
* (3)父類的非靜態**塊
* (4)父類的無參構造 (最後)
* * 非靜態方法前面其實有乙個預設的物件this
* this在構造器(或))它表示的是正在建立的物件
* 因為這裡是在建立son物件,所以test()執行的是子類重寫的**(物件導向多型)
*/public
class
father
father()
public
inttest()
public
static
intmethod()
}
package 類的初始化;
/** * 類初始化過程:
* * ① 乙個類要建立例項需要先載入並初始化該類
* main方法所在的類需要先載入和初始化
* 當main方法中沒有建立例項時,執行結果:5 1 10 6
* * ② 乙個子類要初始化需要先初始化父類
* * ③ 乙個類初始化就是執行()方法
* ()方法由靜態類變數顯示賦值**和靜態**塊組成
* 類變數顯示賦值**和靜態**塊**從上到下順序執行
* ()方法只執行一次
* * 子類的初始化:
* (1)j = method(); 10
* (2〉子類的靜態**塊 6
* * 例項初始化過程:
* ① 例項初始化就是執行()方法
* ()方法可能過載有多個,有幾個構造器就有幾個方法
* ()方法由非靜態例項變數顯示賦值**和非靜態**塊、對應構造器**組成
* 非靜態例項變數顯示賦值**和非靜態**塊**從上到下順序執行,而對應構造器的**最後執行
* 每次建立例項物件,呼叫對應構造器,執行的就是對應的方法
* 方法的首行是super()或super(實參列表),即對應父類的方法
* * 子類的例項初始化:
* (1) super() (最前) 相當於去呼叫父類的例項初始化
* (2) i = test();
* (3)子類的非靜態**塊
* (4)子類的無參構造 (最後)
* * 哪些方法不可以被重寫:
* final方法
* 靜態方法
* private等子類中不可見方法
*/public
class
sonextends
father
son(
)@override
public
inttest()
public
static
intmethod()
public
static
void
main
(string[
] args)
}
結果:5 1 10 6 9 3 2 9 8 7
9 3 2 9 8 7
靜態**塊是定義在成員位置,使用static
修飾的**塊。
特點:構造**塊是定義在類中成員位置的**塊
特點:區域性**塊是定義在方法或語句中**
特點:
package
static的用法;
class
abstatic
//靜態塊。在class資訊載入到jvm時執行1次。
publicab(
)}public
class 執行順序
}
package 面試;
class
apublica(
)}class
bextends
apublicb(
)}public
class
static關鍵字
}
執行結果:1a2b2b。建立物件時構造器的呼叫順序是:先初始化靜態成員,然後呼叫父類構造器,再初始化非靜態成員,最後呼叫自身構造器。 類的初始化
類的初始化通產有3種型別 使用初始化列表,在建構函式體中賦值,以及使用預設建構函式。先說前兩種 初始化列表與在建構函式體中賦值的區別在 呢?主要有兩點 第一,有的成員不能使用函式體中的 初始化。這其實就是初始化與賦值的區別 比如比如const 成員,引用型別,以及沒有定義預設建構函式的類,它們都必須...
類的初始化
類的初始化通產有3種型別 使用初始化列表,在建構函式體中賦值,以及使用預設建構函式。先說前兩種 初始化列表與在建構函式體中賦值的區別在 呢?主要有兩點 第一,有的成員不能使用函式體中的 初始化。這其實就是初始化與賦值的區別 比如比如const 成員,引用型別,以及沒有定義預設建構函式的類,它們都必須...
類的初始化
類的使用順序 類的裝載 鏈結 驗證 準備 解析 初始化 物件例項化 class t implements cloneable static 構造方法是個例項化方法,在 t 被例項化時呼叫 public t string str public static int print string str p...