java構(gòu)造器的執(zhí)行順序是什么

這篇文章給大家介紹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)

綿陽服務(wù)器托管