内射老阿姨1区2区3区4区_久久精品人人做人人爽电影蜜月_久久国产精品亚洲77777_99精品又大又爽又粗少妇毛片

java初始化分析

關(guān)于初始化的一點體會
[@more@]

class Egg2 {

創(chuàng)新互聯(lián)建站專注于伊犁網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗。 熱誠為您提供伊犁營銷型網(wǎng)站建設(shè),伊犁網(wǎng)站制作、伊犁網(wǎng)頁設(shè)計、伊犁網(wǎng)站官網(wǎng)定制、成都微信小程序服務(wù),打造伊犁網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供伊犁網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。

static int i=5;
int j=5;
static//父類靜態(tài)變量初始化塊首先被執(zhí)行,在main方法之前。
{
System.out.println("superClass static block initialized ");
}
protected class Yolk {
public Yolk() {
System.out.println("Egg2.Yolk()");
}
public void f() {
System.out.println("call method f() in superClass");

}
private void m() {
System.out.println("call method m() in superClass");
}

}

private Yolk y = new Yolk();//y是Yolk的對象同時是Egg2的成員
{ //非靜態(tài)變量語句塊,在靜態(tài)語句塊之后,main方法之后,構(gòu)造方法之前執(zhí)行
System.out.println("superClass member block initialized");
}
public Egg2() {
System.out.println("New Egg2()");//2
System.out.println("Egg2`s constructor initialized");

}
public void insertYolk(Yolk yy) {
y = yy;
}
public void g() {
y.f();
y.m();

}
private void n() {
System.out.println("method n() in superClass");
}
}
public class BigEgg2 extends Egg2 {
static int i;
int j=10;
static //子類靜態(tài)初始化塊在父類靜態(tài)初始化塊后執(zhí)行,在main方法之前。
{
System.out.println("subClass static block initialized");
}
{ //子類的非靜態(tài)初始化塊
Yolk subY =new Yolk();
System.out.println("subClass member block initialized");
}
public class Yolk extends Egg2.Yolk {
public Yolk() {
System.out.println("BigEgg2.Yolk()");
}
public void f() {
System.out.println("invoke method f() in subClass");
}
public void m() {
System.out.println("invoke method m() in subClass");
}
}
public BigEgg2() {
System.out.println("begin new Yolk() in BigEgg2`s constructor");
insertYolk(new Yolk());

}
public void n() {
System.out.println("method n() in subClass");
}
public static void main(String[] args) {
System.out.println("main begins!");
System.out.println("-------------------------------");
Egg2 e2 = new BigEgg2();
e2.g();
//e2.n(); error! 因為父類的n方法是private的,所以無法在此訪問
System.out.println("e2.i= "+e2.i);
System.out.println("e2.j= "+e2.j);
System.out.println("-------------------------------");
BigEgg2 ee=new BigEgg2();
ee.g();
ee.n();
System.out.println("ee.i= "+ee.i);
System.out.println("ee.j= "+ee.j);
System.out.println("i = "+i);
}
}
/* The Result:
superClass static block initialized
subClass static block initialized
main begins!
-------------------------------
Egg2.Yolk() 由于private Yolk y = new Yolk();創(chuàng)建Yolk的對象,調(diào)用
Yolk的構(gòu)造方法,因此此句被輸出來。
superClass member block initialized 在父類構(gòu)造方法之前初始化
New Egg2()在非靜態(tài)變量初始化完畢后
Egg2`s constructor initialized 構(gòu)造方法開始初始化
Egg2.Yolk()經(jīng)過了靜態(tài)初始化,父類非靜態(tài)變量初始化,父類構(gòu)造方法初始化后,子類終于開始了自己的初始化,首先先做非靜態(tài)變量初始化吧。
BigEgg2.Yolk()因為Yolk subY =new Yolk();所以先調(diào)用父類的構(gòu)造方法,在
subClass member block initialized子類的構(gòu)造方法,以上2句被輸出
begin new Yolk() in BigEgg2`s constructor開始子類的構(gòu)造方法初始化
Egg2.Yolk()因為insertYolk(new Yolk());又再次new Yolk()所以再次輸出
BigEgg2.Yolk()內(nèi)部類同樣是外部類的成員,如同方法一樣,因為子類的內(nèi)部類與父類的內(nèi)部類同名,所以發(fā)生override關(guān)系。先調(diào)用父類的構(gòu)造,再子類的構(gòu)造。
invoke method f() in subClass因為是在父類的方法中調(diào)用f方法,所以JVM會先檢查父類中的f()方法,再調(diào)用時,卻因為子類override了父類的f方法,所以會調(diào)用子類的f方法而不會調(diào)用父類的f方法。
call method m() in superClass因為父類的m方法是private的所以直接調(diào)用父類的,而不會調(diào)用子類的。
e2.i=5 因為e2是通過Egg2 e2 = new BigEgg2();創(chuàng)建的,屬于Egg2的引用,
BigEgg2的對象,因此它會首先在Egg2中尋找調(diào)用的方法或變量,再加以賦值,或調(diào)用方法
而如果子類的方法override了父類的方法,則會去調(diào)用子類的方法,但是變量去只使用父類的而不會使用子類的,因為變量不能override吧。此時如果父類沒有i這個變量,則編譯報錯.cannot resolve symbol
e2.j=5
-------------------------------
Egg2.Yolk()
superClass member block initialized
New Egg2()
Egg2`s constructor initialized
Egg2.Yolk()
BigEgg2.Yolk()
subClass member block initialized
begin new Yolk() in BigEgg2`s constructor
Egg2.Yolk()
BigEgg2.Yolk()
invoke method f() in subClass
call method m() in superClass
method n() in subClass
ee.i=0 由于ee是通過BigEgg2 ee=new BigEgg2()創(chuàng)建的,所以運行時不會去先去尋找父類的變量和方法。直接調(diào)用子類的。
ee.j=10
i=0*/
初始化順序:父類靜態(tài)初始化→子類靜態(tài)初始化(在main方法之前)→子類創(chuàng)建對象后→
父類的非靜態(tài)變量初始化→父類的構(gòu)造方法初始化→子類的非靜態(tài)變量初始化→子類的構(gòu)造方法初始化。
靜態(tài)初始化與非靜態(tài)初始化順序:按照語句順序逐一進行

文章題目:java初始化分析
網(wǎng)頁網(wǎng)址:http://www.rwnh.cn/article24/jdisje.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供全網(wǎng)營銷推廣品牌網(wǎng)站建設(shè)、網(wǎng)站維護、網(wǎng)站營銷云服務(wù)器、自適應(yīng)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

微信小程序開發(fā)
许昌市| 阿克苏市| 临夏县| 临泉县| 定襄县| 蒲城县| 呼图壁县| 鹿泉市| 合阳县| 河源市| 珠海市| 静安区| 岳西县| 启东市| 红河县| 满城县| 凤山县| 乐陵市| 濉溪县| 微博| 潮州市| 海城市| 乐至县| 武邑县| 商城县| 肃宁县| 都江堰市| 南开区| 当阳市| 闸北区| 综艺| 天门市| 晋江市| 武汉市| 澎湖县| 夏邑县| 屯留县| 隆子县| 平江县| 丁青县| 房山区|