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

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

為什么super(…)或this(…)調(diào)用語句只能作為構(gòu)造函數(shù)中的第一句出現(xiàn)?

class A {
     A()
       {
            System.out.println("You call super class non-args constructor!");
    
       }
} 
class B extends A {   
   B()   
   {
      //這里,編譯器將自動加上 super(); 
     System.out.println("You call subclass constructor!");     
  }

    B(String n)
    {     
    super(); 
    this();     
    //實際就是調(diào)用了B(){...},而在B(){...}中編譯器自動加上了     
    //super();這樣就相當(dāng)于兩次調(diào)用了super();也就是說對父類進(jìn)
    //行了兩次初始化。而在實例化一個對象時,一個構(gòu)造方法只能調(diào)用一次,這說明this和super不能同時存在一個構(gòu)造方法中。
    //同時因為系統(tǒng)沒有在第一行發(fā)現(xiàn)this()或super()調(diào)用,就會自動加上super(),如果沒有將this()和super()放在第一行就會產(chǎn)生矛盾。     
    //因為總有一個super()在第二句上。所以該程序不能通過編譯!??!   }

結(jié)論 也就是說你必須在構(gòu)造器的第一行放置super或者this構(gòu)造器,否則編譯器會自動地放一個空參數(shù)的super構(gòu)造器的,其他的構(gòu)造器也可以調(diào)用super或者this,調(diào)用成一個遞歸構(gòu)造鏈,最后的結(jié)果是父類的構(gòu)造器(可能有多級父類構(gòu)造器)始終在子類的構(gòu)造器之前執(zhí)行,遞歸的調(diào)用父類構(gòu)造器。無法執(zhí)行當(dāng)前的類的構(gòu)造器。也就不能實例化任何對象,這個類就成為一個無為類。  從另外一面說,子類是從父類繼承而來,繼承了父類的屬性和方法,如果在子類中先不完成父類的成員的初始化,則子類無法使用,應(yīng)為在java中不允許調(diào)用沒初始化的成員。在構(gòu)造器中是順序執(zhí)行的,也就是說必須在第一行進(jìn)行父類的初始化。而super能直接完成這個功能。This()通過調(diào)用本類中的其他構(gòu)造器也能完成這個功能。  因此,this()或者super()必須放在第一行。

成都創(chuàng)新互聯(lián)公司是一家專業(yè)提供鳳城企業(yè)網(wǎng)站建設(shè),專注與成都網(wǎng)站設(shè)計、成都做網(wǎng)站、html5、小程序制作等業(yè)務(wù)。10年已為鳳城眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站制作公司優(yōu)惠進(jìn)行中。


當(dāng)前名稱:為什么super(…)或this(…)調(diào)用語句只能作為構(gòu)造函數(shù)中的第一句出現(xiàn)?
URL分享:http://weahome.cn/article/gdjjdo.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部