真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

java中靜態(tài)代碼塊與構(gòu)造方法執(zhí)行順序判斷的示例分析

這篇文章將為大家詳細(xì)講解有關(guān)java中靜態(tài)代碼塊與構(gòu)造方法執(zhí)行順序判斷的示例分析,小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。

硚口網(wǎng)站制作公司哪家好,找成都創(chuàng)新互聯(lián)公司!從網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、APP開(kāi)發(fā)、響應(yīng)式網(wǎng)站建設(shè)等網(wǎng)站項(xiàng)目制作,到程序開(kāi)發(fā),運(yùn)營(yíng)維護(hù)。成都創(chuàng)新互聯(lián)公司2013年開(kāi)創(chuàng)至今到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來(lái)保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選成都創(chuàng)新互聯(lián)公司。

靜態(tài)代碼優(yōu)先于非靜態(tài)的代碼,是因?yàn)楸籹tatic修飾的成員都是類(lèi)成員,會(huì)隨著JVM加載類(lèi)的時(shí)候加載而執(zhí)行,而沒(méi)有被static修飾的成員也被稱為實(shí)例成員,需要?jiǎng)?chuàng)建對(duì)象才會(huì)隨之加載到堆內(nèi)存。所以靜態(tài)的會(huì)優(yōu)先非靜態(tài)的。

執(zhí)行構(gòu)造器(構(gòu)造方法)的時(shí)候,在執(zhí)行方法體之前存在隱式三步:

1,super語(yǔ)句,可能出現(xiàn)以下三種情況:

      1)構(gòu)造方法體的第一行是this語(yǔ)句,則不會(huì)執(zhí)行隱式三步,

      2)構(gòu)造方法體的第一行是super語(yǔ)句,則調(diào)用相應(yīng)的父類(lèi)的構(gòu)造方法,

      3)構(gòu)造方法體的第一行既不是this語(yǔ)句也不是super語(yǔ)句,則隱式調(diào)用super(),即其父類(lèi)的默認(rèn)構(gòu)造方法,這也是為什么一個(gè)父類(lèi)通常要提供默認(rèn)構(gòu)造方法的原因;

2,初始化非靜態(tài)變量;

3,構(gòu)造代碼塊。

由此可知,構(gòu)造代碼塊優(yōu)先于構(gòu)造方法的方法體,但是this關(guān)鍵字跟super關(guān)鍵字不能同時(shí)出現(xiàn),而且只能在代碼的第一行。如果出現(xiàn)了this關(guān)鍵字,隱式三步就不會(huì)執(zhí)行。

先看看下面幾個(gè)類(lèi),然后判斷它們的輸出:

public class A {

 static{
  System.out.print(1);
 }
 public A(){
  System.out.print(2);
 }
 }

 public class B extends A{

 static{
  System.out.print("a");
 }
 public B(){
  System.out.print("b");
 }
 }

 public class C {

 public static void main(String[] args){
  A a = new B();
  a = new B();
 }
 }

父類(lèi)與子類(lèi)執(zhí)行的先后順序

靜態(tài)變量的執(zhí)行特性

方法重寫(xiě)(override)的注意事項(xiàng)

1.當(dāng)父類(lèi)與子類(lèi)都有靜態(tài)代碼塊和構(gòu)造函數(shù)的時(shí)候,執(zhí)行順序如下:

父類(lèi)靜態(tài)代碼塊 > 子類(lèi)靜態(tài)代碼塊

父類(lèi)構(gòu)造函數(shù) > 子類(lèi)構(gòu)造函數(shù)(先有父親,后有孩子)

如果是多級(jí)繼承關(guān)系的話,最高層的父類(lèi)首先執(zhí)行,然后依次遞減

總結(jié):靜態(tài)優(yōu)先執(zhí)行,父類(lèi)優(yōu)先執(zhí)行

注意:靜態(tài)代碼塊是在JVM加載類(lèi)的時(shí)候執(zhí)行的,而且靜態(tài)代碼塊執(zhí)行且僅執(zhí)行一次

2.在調(diào)用類(lèi)中的方法時(shí),在方法體執(zhí)行之前,首先要對(duì)類(lèi)中的成員變量進(jìn)行賦值,如果代碼中沒(méi)有賦具體的值,也有默認(rèn)值。成員變量的賦值順序按照前后順序進(jìn)行。

如果有既有直接賦值,也有構(gòu)造方法賦值,那么根據(jù)先后順序執(zhí)行

3.重寫(xiě)(Override) 重載(Overload)

重載是方法名字,返回類(lèi)型一致,唯一不同的是方法的參數(shù)不同(參數(shù)類(lèi)型不同,或者參數(shù)類(lèi)型不同)

重寫(xiě):

  • 發(fā)生方法重寫(xiě)的兩個(gè)方法返回值,方法名,參數(shù)列表必須完全一致

  • 子類(lèi)拋出的異常不能超過(guò)父類(lèi)相應(yīng)的方法拋出的異常

  • 子類(lèi)方法的訪問(wèn)級(jí)別不能低于父類(lèi)相應(yīng)方法的訪問(wèn)級(jí)別(public,package,protected, private)

多態(tài):

父類(lèi)的引用指向了子類(lèi)的對(duì)象,調(diào)用時(shí)執(zhí)行的方法也是子類(lèi)的方法,父類(lèi)的方法并不會(huì)被執(zhí)行,

所謂多態(tài)就是父類(lèi)或者接口類(lèi)型的引用可以指向子類(lèi)或者實(shí)現(xiàn)該接口的類(lèi)的實(shí)例(對(duì)象),

看了上面的說(shuō)明,大家也應(yīng)該知道上面的程序輸出結(jié)果了。

輸出結(jié)果為:1a2b2b

關(guān)于“java中靜態(tài)代碼塊與構(gòu)造方法執(zhí)行順序判斷的示例分析”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,使各位可以學(xué)到更多知識(shí),如果覺(jué)得文章不錯(cuò),請(qǐng)把它分享出去讓更多的人看到。


新聞名稱:java中靜態(tài)代碼塊與構(gòu)造方法執(zhí)行順序判斷的示例分析
標(biāo)題網(wǎng)址:http://weahome.cn/article/goephj.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部