rocket
走在agile的小路上
BlogJava
首頁
新隨筆
聯(lián)系
聚合
管理
隨筆-55 評論-208 文章-0 trackbacks-0
一個以前沒有注意的問題:java構(gòu)造函數(shù)的執(zhí)行順序
昨天在改一處代碼時發(fā)現(xiàn)執(zhí)行的過程和預(yù)想的不一樣,仔細(xì)探究才發(fā)現(xiàn)是構(gòu)造器執(zhí)行順序問題.(汗自己一下,基礎(chǔ)不夠扎實)
特地做了一些嘗試然后把java構(gòu)造器的執(zhí)行順序整理出來.
首先是我測試的代碼:
public
class
Son
extends
Father
{
SonProp r
=
new
SonProp();
public
Son()
{
System.out.println(
"
Son is construct
"
);
}
public
static
void
main(String[] args)
{
new
Son();
}
}
class
Father
{
FatherProp SonProp
=
new
FatherProp();
public
Father()
{
System.out.println(
"
Father is construct
"
);
}
}
class
SonProp
{
public
SonProp()
{
System.out.println(
"
SonProp is construct
"
);
}
}
class
FatherProp
{
public
FatherProp()
{
System.out.println(
"
FatherProp is construct
"
);
}
}
執(zhí)行結(jié)果如下:
FatherProp is construct
Father is construct
SonProp is construct
Son is construct
由此不難看出java類初始化時構(gòu)造函數(shù)調(diào)用順序:
(1)初始化對象的存儲空間為零或null值;
(2)按順序分別調(diào)用父類成員變量和實例成員變量的初始化表達(dá)式;
(3)調(diào)用父類構(gòu)造函數(shù);(如果實用super()方法指定具體的某個父類構(gòu)造函數(shù)則使用指定的那個父類構(gòu)造函數(shù))
(4)按順序分別調(diào)用類成員變量和實例成員變量的初始化表達(dá)式;
(5)調(diào)用類本身構(gòu)造函數(shù)。
posted on 2008-05-27 11:43
rocket
閱讀(8198)
評論(6)
編輯
收藏
所屬分類:
經(jīng)驗積累
評論:
#
re: 一個以前沒有注意的問題:java構(gòu)造函數(shù)的執(zhí)行順序 2008-05-27 11:46 |
基金凈值
我也才知道,謝謝!
回復(fù)
更多評論
#
re: 一個以前沒有注意的問題:java構(gòu)造函數(shù)的執(zhí)行順序 2008-05-27 12:30 |
隔葉黃鶯
借用我在
http://m.tkk7.com/cheneyfree/archive/2008/05/24/202643.html
里寫的回復(fù),再次貼來這里來,與博主共勉
1. 初始化分為為的初始化和實例的初始化
2. 每個類在 JVM 中都對應(yīng)一個 Class 實例
3. 父類實例是作為子例的部分存在的 (Class 實例之間也存在父子關(guān)系)
4. 初始化實例之前要初始化類
基于以上幾點就可以理解以下初始化順序
1. 父類靜態(tài)屬性、靜態(tài)類 (父類的初始化,對應(yīng) JVM 方法 cinit())
2. 子類的靜態(tài)屬性、靜態(tài)類 (子類的初始化,對應(yīng) JVM 方法 cinit())
3. 父類的實例構(gòu)造,實例變量初始化 (實例變量初始實際會放到 JVM 的 init() 中)
4. 子類的實例構(gòu)造,實例變量初始化 (也是對應(yīng)的 init() 方法)
關(guān)于類的 Class 實例,可以回想 Log 的聲明
Log log = LogFactory.getLog(TestClass.class);
也就是無論你,new 多少個 TestClass 實例,它們對應(yīng)著同一個 TestClass 的 Class 實例,也就是為什么很多地方把靜態(tài)方法、靜態(tài)屬性說成是類的方法、類的屬性,其實質(zhì)就是在 JVM 中存在同一個 Class 實例的方法、屬性,也就能保持一致性。
關(guān)于父類實例是作為子類的一部分存在,可借鑒 C++ 或是有面向?qū)ο筇匦缘?C 函數(shù)庫(如 gtk),來理解,父類實例會居于子類實例的首地址,所以對子類轉(zhuǎn)型成父類實例時,它是安全的,因為首地址一樣的,所以從首地址到 size(父類)就是父類實例地址空間,到size(子類)就是子類實例的地址空間。
回復(fù)
更多評論
#
re: 一個以前沒有注意的問題:java構(gòu)造函數(shù)的執(zhí)行順序 2008-05-27 13:02 |
rocket
@隔葉黃鶯
呵呵,還是我們的黃鶯扎實啊,以前還真沒有仔細(xì)研究過jvm。這就去仔細(xì)找資料看看。
回復(fù)
更多評論
#
re: 一個以前沒有注意的問題:java構(gòu)造函數(shù)的執(zhí)行順序 2008-05-27 17:33 |
deathnote
筆試了幾次,基礎(chǔ)很重要啊,收下了。。。。
回復(fù)
更多評論
#
re: 一個以前沒有注意的問題:java構(gòu)造函數(shù)的執(zhí)行順序 2008-05-28 20:49 |
Jack.Wang
LZ 真強大,看來你的 oo 還是不行啊!
最近聽一個牛人(國外留學(xué)的 doctor),講中間件的時候講幾次內(nèi)存模型。真的受益匪淺,改天去你們公司分享一下!
回復(fù)
更多評論
#
re: 一個以前沒有注意的問題:java構(gòu)造函數(shù)的執(zhí)行順序
2012-08-08 10:54 |
王鵬飛
不錯,很有幫助
回復(fù)
更多評論
新用戶注冊
刷新評論列表
只有注冊用戶
登錄
后才能發(fā)表評論。
網(wǎng)站導(dǎo)航:
博客園
IT新聞
Chat2DB
C++博客
博問
管理
相關(guān)文章:
roller擴展開發(fā)經(jīng)驗小結(jié)之xmlrpc
不仁義,不仗義
一個以前沒有注意的問題:java構(gòu)造函數(shù)的執(zhí)行順序
Dict.CN 在線詞典, 英語學(xué)習(xí), 在線翻譯
QQ:19794405
agilelife分享群:59765983
QQ上少了,請大家加入msn group:
agilelife@groups.msn.com
敏捷項目實踐經(jīng)驗分享
TDD,重構(gòu),迭代,結(jié)對
<
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
常用鏈接
我的隨筆
我的評論
我的參與
最新評論
留言簿
(7)
給我留言
查看公開留言
查看私人留言
我參與的團(tuán)隊
深圳Java俱樂部(0/0)
隨筆分類
(15)
UI相關(guān)
好文翻譯(1)
常用框架(1)
敏捷方法(4)
數(shù)據(jù)庫相關(guān)
構(gòu)架設(shè)計(2)
經(jīng)驗積累(3)
項目管理(4)
隨筆檔案
(55)
2008年12月 (1)
2008年7月 (2)
2008年5月 (8)
2008年3月 (1)
2008年2月 (4)
2007年10月 (1)
2007年9月 (4)
2007年7月 (3)
2007年5月 (2)
2007年4月 (6)
2007年3月 (5)
2007年2月 (2)
2007年1月 (3)
2006年11月 (3)
2006年10月 (1)
2006年8月 (1)
2006年7月 (1)
2006年5月 (2)
2006年4月 (2)
2006年3月 (3)
相冊
rocket
搜索
積分與排名
積分 - 133256
排名 - 464
最新評論
1.?re: 找了一天的jsp格式化工具,最后還是用回workshop
nb@2
--3
2.?re: 一個以前沒有注意的問題:java構(gòu)造函數(shù)的執(zhí)行順序
不錯,很有幫助
--王鵬飛
3.?re: 一個新java web項目入手過程總結(jié)
標(biāo)記一下。
--何楊
4.?re: 單元測試究竟是測試什么?[未登錄]
單元測試是在測邏輯,包括條件判定,循環(huán)等。博主的這段代碼不包括任何邏輯,當(dāng)然不需要用單元測試去覆蓋。
--王輝
5.?re: 找了一天的jsp格式化工具,最后還是用回workshop
傻逼
--2
閱讀排行榜
1.?一個新java web項目入手過程總結(jié)(8500)
2.?一個以前沒有注意的問題:java構(gòu)造函數(shù)的執(zhí)行順序(8198)
3.?找了一天的jsp格式化工具,最后還是用回workshop(7383)
4.?dwr reverse-ajax 實例解析(6605)
5.?Spring+hibernate 單元測試框架總結(jié)(6239)
評論排行榜
1.?不仁義,不仗義(24)
2.?招聘java程序員,系統(tǒng)架構(gòu)師(20)
3.?dwr reverse-ajax 實例解析(11)
4.?找了一天的jsp格式化工具,最后還是用回workshop(10)
5.?單元測試究竟是測試什么?(10)
Powered by:
博客園
模板提供:
滬江博客
Copyright ©2025 rocket
主站蜘蛛池模板:
韩国18福利视频免费观看
|
久久久无码精品亚洲日韩京东传媒
|
国产免费不卡视频
|
久久国产一片免费观看
|
亚洲第一街区偷拍街拍
|
亚洲不卡1卡2卡三卡2021麻豆
|
日韩亚洲人成在线综合日本
|
va亚洲va日韩不卡在线观看
|
久久综合AV免费观看
|
51视频精品全部免费最新
|
国产在线播放线91免费
|
老司机午夜在线视频免费观
|
亚洲高清一区二区三区电影
|
亚洲香蕉久久一区二区
|
亚洲综合视频在线
|
久久久亚洲欧洲日产国码农村
|
中文字幕精品亚洲无线码二区
|
免费国产a国产片高清网站
|
成人午夜18免费看
|
免费无码AV片在线观看软件
|
免费视频爱爱太爽了
|
中文字幕免费观看
|
久久久精品2019免费观看
|
青青草原1769久久免费播放
|
成人网站免费大全日韩国产
|
国产99精品一区二区三区免费
|
国产亚洲女在线线精品
|
男性gay黄免费网站
|
男男gvh肉在线观看免费
|
国产亚洲精品美女
|
免费中文字幕视频
|
一区二区在线视频免费观看
|
一级毛片**免费看试看20分钟
|
一级毛片大全免费播放下载
|
免费能直接在线观看黄的视频
|
久久亚洲国产中v天仙www
|
久久精品国产69国产精品亚洲
|
国产AV无码专区亚洲AV男同
|
亚洲av成人无码久久精品
|
亚洲高清在线视频
|
亚洲美女aⅴ久久久91
|