java初始化例子_Java 非静态初始化的例子
在繼承關(guān)系中,靜態(tài)初始化、非靜態(tài)初始化和構(gòu)造函數(shù)的執(zhí)行順序
public class ExA {
static {
System.out.println("父類--靜態(tài)代碼塊");
}
public ExA() {
System.out.println("父類--構(gòu)造函數(shù)");
}
{
//非靜態(tài)代碼塊
System.out.println("父類--非靜態(tài)代碼塊");
}
public static void main(String[] args) {
new ExB();
}
}
class ExB extends ExA {
static {
System.out.println("子類--靜態(tài)代碼塊");
}
{
//非靜態(tài)代碼塊
System.out.println("子類--非靜態(tài)代碼塊");
}
public ExB() {
System.out.println("子類--構(gòu)造函數(shù)");
}
}
執(zhí)行結(jié)果:
父類--靜態(tài)代碼塊
子類--靜態(tài)代碼塊
父類--非靜態(tài)代碼塊
父類--構(gòu)造函數(shù)
子類--非靜態(tài)代碼塊
子類--構(gòu)造函數(shù)
從上邊的例子我們可以得出非靜態(tài)代碼塊的初始化順序是在靜態(tài)代碼塊的初始化之后。
下邊我們再來看另一個例子:
class Mug{
public Mug(int marker) {
System.out.println("Mug("+marker+")");
}
void f(int marker){
System.out.println("f("+marker+")");
}
}
public class Mugs {
Mug mug1;
Mug mug2;
{
//非靜態(tài)代碼塊
mug1 = new Mug(1);
mug2 = new Mug(2);
System.out.println("mug1 & mug2 initialized");
}
Mugs(){
System.out.println("Mugs()");
}
Mugs(int i){
System.out.println("Mugs(int i)");
}
public static void main(String[] args) {
System.out.println("Inside main()");
//首先執(zhí)行Mugs類中非靜態(tài)代碼塊,創(chuàng)建兩個對象。然后執(zhí)行無參構(gòu)造函數(shù)
new Mugs();
System.out.println("new Mugs() completed");
//再執(zhí)行Mugs類中非靜態(tài)代碼塊,這也是和靜態(tài)代碼塊只初始化一次的不同之后,其次調(diào)用有參構(gòu)造函數(shù)
new Mugs(1);
System.out.println("new Mugs(1) completed");
}
}
以上就是Java 非靜態(tài)初始化的例子的詳細(xì)內(nèi)容,更多關(guān)于Java 非靜態(tài)初始化的資料請關(guān)注聚米學(xué)院其它相關(guān)文章!
總結(jié)
以上是生活随笔為你收集整理的java初始化例子_Java 非静态初始化的例子的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java高次方数尾数输出_C语言求高次方
- 下一篇: java什么是派生,Java中所有的类都