面對開源的世界..
BlogJava
首頁
新隨筆
新文章
聯(lián)系
聚合
管理
posts - 188,comments - 176,trackbacks - 0
<
2008年5月
>
日
一
二
三
四
五
六
27
28
29
30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
5
6
7
常用鏈接
我的隨筆
我的評論
我的參與
最新評論
留言簿
(13)
給我留言
查看公開留言
查看私人留言
隨筆分類
(188)
Ajax(2)
Datestructure
DWR
Hibernate(5)
J2SE(5)
JavaScript
JavaServer(2)
JBS(22)
JSP/Servlet(13)
Junit(1)
Life(2)
Oracle(18)
protocol(1)
SEO
Spring(3)
SQLServer(7)
Struts(7)
UML(4)
Unix/Linux(11)
Windows(2)
WorkFlow(1)
XML(2)
互聯(lián)網(wǎng)產(chǎn)品(26)
網(wǎng)絡安全(3)
通信&政企產(chǎn)品(17)
通信業(yè)務(22)
需求分析(12)
隨筆檔案
(176)
2017年6月 (1)
2017年2月 (1)
2016年11月 (1)
2016年9月 (1)
2016年7月 (1)
2016年5月 (1)
2016年3月 (1)
2016年2月 (1)
2016年1月 (1)
2015年11月 (1)
2015年10月 (1)
2015年7月 (2)
2015年6月 (1)
2015年5月 (1)
2015年4月 (1)
2015年3月 (1)
2015年1月 (2)
2014年12月 (1)
2014年11月 (1)
2014年6月 (2)
2014年5月 (10)
2014年4月 (1)
2014年3月 (1)
2014年1月 (1)
2013年12月 (2)
2013年11月 (1)
2013年8月 (1)
2013年6月 (2)
2013年4月 (2)
2013年3月 (2)
2013年2月 (1)
2013年1月 (1)
2011年2月 (1)
2010年8月 (1)
2010年6月 (1)
2010年4月 (1)
2010年2月 (1)
2009年12月 (1)
2009年11月 (1)
2009年9月 (2)
2009年7月 (2)
2009年6月 (1)
2009年3月 (2)
2009年1月 (1)
2008年12月 (2)
2008年11月 (2)
2008年10月 (1)
2008年9月 (2)
2008年8月 (2)
2008年7月 (3)
2008年6月 (1)
2008年5月 (5)
2008年4月 (3)
2008年3月 (4)
2008年2月 (2)
2008年1月 (2)
2007年12月 (4)
2007年11月 (4)
2007年10月 (2)
2007年8月 (4)
2007年6月 (2)
2007年5月 (68)
強烈推薦
DBA Notes
JavaWorld
Java開源大全
OperaMasks.org
Oracle專欄
OSWorkflow
PL/SQL專欄
UML軟件工程組織
XZC.Log
中間件技術論壇
俺的大巴
咖啡小駐
堅持到底
大寶sodme
徽劍評點
韓小明
最新隨筆
1.?產(chǎn)品規(guī)劃
2.?需求分析和判斷
3.?談談產(chǎn)品工作過程
4.?談談產(chǎn)品工作中的項目管理
5.?產(chǎn)品重構那些事
6.?產(chǎn)品設計觀
7.?產(chǎn)品修養(yǎng)
8.?前臺 vs 中/后臺產(chǎn)品設計
9.?2015產(chǎn)品感悟
10.?前端產(chǎn)品設計筆記
11.?無規(guī)則,不平臺
12.?產(chǎn)品的生命周期體驗
13.?產(chǎn)品軟技能
14.?平臺型產(chǎn)品的需求分析
15.?我所理解的產(chǎn)品思維
16.?平臺產(chǎn)品的需求溝通與評審
17.?平臺產(chǎn)品的競品調(diào)研與業(yè)務分析
18.?C端產(chǎn)品的那些事
19.?我理解的互聯(lián)網(wǎng)產(chǎn)品經(jīng)理
20.?通信與互聯(lián)網(wǎng)產(chǎn)品工作感受
最新評論
1.?re: 面對需求,我們的產(chǎn)品修養(yǎng)?[未登錄]
互聯(lián)網(wǎng)對產(chǎn)品人綜合素質(zhì)要求是比較高的
--linda
2.?re: 談談前臺、中/后臺產(chǎn)品設計
產(chǎn)品的升級和更新?lián)Q代都是這樣的
--淘寶刷流量軟件
3.?re: 淺談需求分析
看看技術人員的工作blog 學習了 慢慢看起來
--ttt
4.?re: 2015產(chǎn)品感悟
大哥你的感悟真深邃。。。
--sqlyun
5.?re: PLSQL中顯式Cursor、隱式Cursor、動態(tài)Ref Cursor
有點亂
--sfe
6.?re: 對session和cookie的一些理解[未登錄]
session不能共享!!!!!!!!!!!!!
--jacky
7.?re: 前端產(chǎn)品設計筆記[未登錄]
產(chǎn)品用戶體驗很重要
--blog
8.?re: 前端產(chǎn)品設計筆記
@java論壇
贊同
--cheng
9.?re: 前端產(chǎn)品設計筆記
我覺得最重要的是用戶群是什么以及如何獲取用戶,把這個想清楚放到設計中才是成功的開始
--java論壇
10.?re: 無規(guī)則,不平臺
評論內(nèi)容較長,點擊標題查看
--性感美女圖片
閱讀排行榜
1.?對session和cookie的一些理解(40885)
2.?PLSQL開發(fā)筆記和小結(jié)(35770)
3.?ORACLE批量更新三種方法比較(11469)
4.?Oracle的悲觀鎖和樂觀鎖(8079)
5.?PLSQL中顯式Cursor、隱式Cursor、動態(tài)Ref Cursor(7860)
評論排行榜
1.?對session和cookie的一些理解(30)
2.?Struts+Hibernate實現(xiàn)shopcart(16)
3.?PLSQL開發(fā)筆記和小結(jié)(14)
4.?BaseAction的java多態(tài)思考(11)
5.?UML中的用例圖分析(10)
對象初始化流程梳理
類Person和子類Son,體現(xiàn)對象初始化流程的代碼:
public
class
Person
{
Bow b1
=
new
Bow(
1
);
static
{
System.out.println(
"
Person static
static塊1
"
);
}
{
System.out.println(
"
Person hello
非static塊1
"
);
}
Bow b2
=
new
Bow(
2
);
static
Bow b3
=
new
Bow(
3
);
Person()
{
System.out.println(
"
Person
Person類的構造器
"
);
}
{
System.out.println(
"
Person hello
非static塊2
"
);
}
static
{
System.out.println(
"
Person static
static塊2
"
);
}
}
class
Son
extends
Person
{
Bow b4
=
new
Bow(
4
);
static
{
System.out.println(
"
Test static
static塊1
"
);
}
{
System.out.println(
"
Test hello1
非static塊1
"
);
}
Bow b5
=
new
Bow(
5
);
static
Bow b6
=
new
Bow(
6
);
Son()
{
System.out.println(
"
Test
Test類的構造器
"
);
}
{
System.out.println(
"
Test hello2
非static塊2
"
);
}
static
{
System.out.println(
"
Test static2
static塊2
"
);
}
public
static
void
main(String[] args)
{
System.out.println(
"
main
"
);
new
Son();
}
}
class
Bow
{
Bow(
int
m)
{
System.out.println(
"
Bow(
"
+
m
+
"
)
"
);
}
}
執(zhí)行結(jié)果:
Person static...static塊1
Bow(3)
Person static...static塊2
Test static...static塊1
Bow(6)
Test static2...static塊2
main...
Bow(1)
Person hello...非static塊1
Bow(2)
Person hello...非static塊2
Person...Person類的構造器
Bow(4)
Test hello1...非static塊1
Bow(5)
Test hello2...非static塊2
Test...Test類的構造器
從上面結(jié)果,可以總結(jié)出JAVA對象初始化的流程:
【1】父類static塊和父類static屬性(兩者的執(zhí)行先后順序依據(jù)它們在類中具體位置由上至下)
【2】子類static塊和子類static屬性(兩者的執(zhí)行先后順序依據(jù)它們在類中具體位置由上至下)
【3】執(zhí)行main方法中new關鍵字之前的代碼塊
【4】父類非static塊執(zhí)行和父類非static屬性(兩者的執(zhí)行先后順序依據(jù)它們在類中具體位置由上至下,如果屬性為實例類型,則執(zhí)行該實例所在類的非static塊和非static屬性,再執(zhí)行該類的構造器,即[4][5]步驟)
【5】父類構造器(完成非static
屬性初始值
的設置)
【6】子類非static塊執(zhí)行和子類非static屬性(兩者的執(zhí)行先后順序依據(jù)它們在類中具體位置由上至下,如果屬性為實例類型,則執(zhí)行該實例所在類的非static塊和非static屬性,再執(zhí)行該類的構造器,即[6][7]步驟)
【7】子類構造器(完成非static屬性初始值設置,如果在子類構造器執(zhí)行前就返回該非static屬性,則該非static屬值為
屬性默認值
)
注:
針對第【7】點“子類構造器執(zhí)行前就返回該非static屬性”,具體可以見下例:
public
class
ParentObjectInit
{
public
void
test()
{
}
public
ParentObjectInit()
{
test();
}
}
class
ChildObjectInit
extends
ParentObjectInit
{
private
int
instanceValue
=
20
;
public
void
test()
{
System.out.println(
"
instance1 value :
"
+
instanceValue);
}
public
static
void
main(String[] args)
{
new
ChildObjectInit();
}
}
這段代碼的執(zhí)行結(jié)果:
instance1 value is: 0 因為new 子類ChildObjectInit時,會先初始化父類ParentObjectInit,繼而調(diào)用父來構造器器,接著執(zhí)行此構造器中的test()方法,基于多態(tài)性,會轉(zhuǎn)而調(diào)用子類的test()方法執(zhí)行子類test()方法代碼體,打印出instanceValue的屬性默認值。(因為此時打印instanceValue值后,父類構造器才執(zhí)行結(jié)束返回,根本還沒輪到子類的初始化工作和子類構造器的執(zhí)行。)
posted on 2008-05-24 21:26
cheng
閱讀(2203)
評論(3)
編輯
收藏
所屬分類:
JBS
FeedBack:
#
re: 對象初始化流程梳理
2008-05-25 15:12 |
隔葉黃鶯
1. 初始化分為為的初始化和實例的初始化
2. 每個類在 JVM 中都對應一個 Class 實例
3. 父類實例是作為子例的部分存在的 (Class 實例之間也存在父子關系)
4. 初始化實例之前要初始化類
基于以上幾點就可以理解以下初始化順序
1. 父類靜態(tài)屬性、靜態(tài)類 (父類的初始化,對應 JVM 方法 cinit())
2. 子類的靜態(tài)屬性、靜態(tài)類 (子類的初始化,對應 JVM 方法 cinit())
3. 父類的實例構造,實例變量初始化 (實例變量初始實際會放到 JVM 的 init() 中)
4. 子類的實例構造,實例變量初始化 (也是對應的 init() 方法)
關于類的 Class 實例,可以回想 Log 的聲明
Log log = LogFactory.getLog(TestClass.class);
也就是無論你,new 多少個 TestClass 實例,它們對應著同一個 TestClass 的 Class 實例,也就是為什么很多地方把靜態(tài)方法、靜態(tài)屬性說成是類的方法、類的屬性,其實質(zhì)就是在 JVM 中存在同一個 Class 實例的方法、屬性,也就能保持一致性。
關于父類實例是作為子類的一部分存在,可借鑒 C++ 或是有面向?qū)ο筇匦缘?C 函數(shù)庫(如 gtk),來理解,父類實例會居于子類實例的首地址,所以對子類轉(zhuǎn)型成父類實例時,它是安全的,因為首地址一樣的,所以從首地址到 size(父類)就是父類實例地址空間,到size(子類)就是子類實例的地址空間。
回復
更多評論
#
re: 對象初始化流程梳理
2008-05-26 14:32 |
cheng
看過樓上朋友見解,體會又深一層,謝謝。
回復
更多評論
#
re: 對象初始化流程梳理
2008-05-26 14:32 |
Happy漫步者
不錯 收藏了
回復
更多評論
新用戶注冊
刷新評論列表
只有注冊用戶
登錄
后才能發(fā)表評論。
網(wǎng)站導航:
博客園
IT新聞
Chat2DB
C++博客
博問
管理
相關文章:
對象初始化流程梳理
static、this、super、final用法
String對象的理解進行時
對象初始化問題引發(fā)的思考
在Java應用程序中訪問USB設備
Java中的類反射機制
Java代碼編寫30條建議
Java動態(tài)的程序設計
為什么Java中繼承是有害的
對象引用對GC的影響
Copyright ©2025 cheng Powered By
博客園
模板提供:
滬江博客
主站蜘蛛池模板:
亚洲va成无码人在线观看
|
亚洲AV一宅男色影视
|
亚洲s码欧洲m码吹潮
|
亚洲国产理论片在线播放
|
黄色网页免费观看
|
日本人的色道www免费一区
|
亚洲av成人中文无码专区
|
又粗又大又猛又爽免费视频
|
美女免费精品高清毛片在线视
|
国产一级淫片视频免费看
|
牛牛在线精品观看免费正
|
亚洲伊人久久大香线蕉综合图片
|
久久精品免费网站网
|
亚洲VA中文字幕无码毛片
|
JLZZJLZZ亚洲乱熟无码
|
曰韩无码AV片免费播放不卡
|
亚洲中文字幕无码爆乳av中文
|
中文字幕成人免费高清在线
|
亚洲精品国产成人99久久
|
免费v片在线观看视频网站
|
77777午夜亚洲
|
亚洲国产成人久久笫一页
|
免费萌白酱国产一区二区三区
|
亚洲激情校园春色
|
成年女人毛片免费观看97
|
日韩在线观看免费
|
亚洲精品自产拍在线观看动漫
|
操美女视频免费网站
|
成人特级毛片69免费观看
|
久久精品国产精品亚洲艾
|
毛片免费在线播放
|
中国好声音第二季免费播放
|
亚洲第一精品电影网
|
免费在线观看亚洲
|
99蜜桃在线观看免费视频网站
|
亚洲高清乱码午夜电影网
|
精品国产日韩亚洲一区
|
三级片免费观看久久
|
亚洲成人午夜在线
|
国产精品国产午夜免费福利看
|
亚洲色成人网站WWW永久四虎
|