這篇文章給大家介紹java構(gòu)造器的執(zhí)行順序是什么,內(nèi)容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
成都創(chuàng)新互聯(lián)專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于成都網(wǎng)站建設(shè)、做網(wǎng)站、鉛山網(wǎng)絡(luò)推廣、成都微信小程序、鉛山網(wǎng)絡(luò)營銷、鉛山企業(yè)策劃、鉛山品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運營等,從售前售中售后,我們都將竭誠為您服務(wù),您的肯定,是我們最大的嘉獎;成都創(chuàng)新互聯(lián)為所有大學(xué)生創(chuàng)業(yè)者提供鉛山建站搭建服務(wù),24小時服務(wù)熱線:028-86922220,官方網(wǎng)址:muchs.cn
1,在沒有靜態(tài)塊的情況下,子類的對象創(chuàng)建時,父類的無參構(gòu)造器-->子類的構(gòu)造器(產(chǎn)生對象的構(gòu)造器,如果
是無參則執(zhí)行的是無參構(gòu)造器,如果執(zhí)行的是有參則執(zhí)行的有參構(gòu)造器)
現(xiàn)在的父類中只有兩個構(gòu)造器:
Father.java Father { public Father(){ System.out.println("我是父類的無參構(gòu)造器"); } public Father(String username){ System.out.println("我是父類有參構(gòu)造器,傳過來的參數(shù)是+"+username); } public class SonDemo extends Father{ public SonDemo(){ System.out.println("我是--子類--的無參構(gòu)造器"); } public SonDemo(String username){ System.out.println("我是子類的有參構(gòu)造器,參數(shù)是"+username); } public void sys(){ System.out.println("我是子類的sys方法"); } public static void main(String[] args) { //里面的內(nèi)容在下面有說明 } }
①,子類使用無參構(gòu)造器創(chuàng)建對象:
在SonDemo 的main方法中加入創(chuàng)建對象的代碼:
SonDemo son = new SonDemo(); }
我是父類的無參構(gòu)造器
我是--子類--的無參構(gòu)造器
②,子類使用有參構(gòu)造器創(chuàng)建對象:
SonDemo的main方法中加入
SonDemo son = new SonDemo("than you ma");
那么控制臺打印的結(jié)果是:
我是父類的無參構(gòu)造器
我是子類的有參構(gòu)造器,參數(shù)是than you ma
也就是說在子類調(diào)用無參構(gòu)造器創(chuàng)建對象的時候,在執(zhí)行它自己的有參構(gòu)造器之前首先執(zhí)行父類的無參構(gòu)造器。
③,在子類中創(chuàng)建父類的對象,使用無參,
SonDemo son = new SonDemo("than you ma"); Father ff = new Father();
SonDemo的main方法中加入
我是父類的無參構(gòu)造器
我是--子類--的無參構(gòu)造器
我是父類的無參構(gòu)造器
調(diào)用了父類的無參構(gòu)造器,有參的創(chuàng)建對象調(diào)用的是有參構(gòu)造器。
總結(jié):在創(chuàng)建子類對象的時候,首先會調(diào)用父類的構(gòu)造器,讓后在調(diào)用子類相應(yīng)的構(gòu)造器創(chuàng)建對象,在子類創(chuàng)建父類對象時,就是直接調(diào)用父類自己相應(yīng)的構(gòu)造器。
2.如果在子類和父類中存在靜態(tài)塊;執(zhí)行順序有會是怎么樣的了?
答,靜態(tài)塊會在構(gòu)造器之前運行。不管是子類還是父類。創(chuàng)建一個對象的時候,會首先加載它的靜態(tài)塊。
Father.java public class Father { //靜態(tài)塊 static{ System.out.println("father static "); } public Father(){ System.out.println("我是父類的無參構(gòu)造器"); } public Father(String username){ System.out.println("我是父類有參構(gòu)造器,傳過來的參數(shù)是+"+username); } } SonDemo.java public class SonDemo extends Father{ //靜態(tài)塊 static{ System.out.println("sonDemo static "); } public SonDemo(){ System.out.println("我是--子類--的無參構(gòu)造器"); } public SonDemo(String username){ System.out.println("我是子類的有參構(gòu)造器,參數(shù)是"+username); } public void sys(){ System.out.println("我是子類的sys方法"); } public static void main(String[] args) { SonDemo son = new SonDemo(); } }
①程序的結(jié)果:
father static sonDemo static 我是父類的無參構(gòu)造器 我是--子類--的無參構(gòu)造器
因為在創(chuàng)建子類對象之前:會創(chuàng)建父類的一個對象,而靜態(tài)塊會在main之前被加載,所以兩個類的靜態(tài)塊首先執(zhí)行。
然后執(zhí)行構(gòu)造器。
②,如果在子類中的main中只創(chuàng)建父類的對象結(jié)果是怎么樣的呢?
打印結(jié)果:
father static sonDemo static 我是父類的無參構(gòu)造器
為什么子類的靜態(tài)塊會被加載了?是因為我們是在SonDemo中測試,如果在其他類中測試就不會打印。
總結(jié):我們說了這么多就是重要的一點。靜態(tài)塊會在構(gòu)造器器之前執(zhí)行。
關(guān)于java構(gòu)造器的執(zhí)行順序是什么就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
本文題目:java構(gòu)造器的執(zhí)行順序是什么
網(wǎng)頁地址:http://muchs.cn/article6/ihciog.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信公眾號、網(wǎng)頁設(shè)計公司、企業(yè)建站、標簽優(yōu)化、虛擬主機、
聲明:本網(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)