老熟女激烈的高潮_日韩一级黄色录像_亚洲1区2区3区视频_精品少妇一区二区三区在线播放_国产欧美日产久久_午夜福利精品导航凹凸

重慶分公司,新征程啟航

為企業提供網站建設、域名注冊、服務器等服務

深入淺析java中的繼承關系類的加載順序

這篇文章將為大家詳細講解有關深入淺析java中的繼承關系類的加載順序,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。

專注于為中小企業提供網站建設、成都做網站服務,電腦端+手機端+微信端的三站合一,更高效的管理,為中小企業興安盟烏蘭浩特免費做網站提供優質的服務。我們立足成都,凝聚了一批互聯網行業人才,有力地推動了1000多家企業的穩健成長,幫助中小企業通過網站建設實現規模擴充和轉變。

詳解java中繼承關系類加載順序問題

實例代碼:

/**
 * Created by fei on 2017/5/31.
 */
public class SonClass extends ParentClass{
  public SonClass(){
    System.out.println("SonClass's constructor");
  }
  { System.out.println("SonClass's block");}
  static {
    System.out.println("SonClass's static block ");
  }

  public static void main(String[] args) {
    System.out.println("------ main start ------ ");
    new SonClass();
    System.out.println("------ main end ------ ");
  }
}

class ParentClass{
  public ParentClass(){
    System.out.println("ParentClass's constructor");
  }
  { System.out.println("ParentClass's block");}
  static {
    System.out.println("ParentClass's static block ");
  }
}

運行結果:

ParentClass's static block 
SonClass's static block 
------ main start ------ 
ParentClass's block
ParentClass's constructor
SonClass's block
SonClass's constructor
------ main end ------ 

根據運行結果,一目了然,在執行 main 方法中 new SonClass() 之前,就在類加載之后執行了類中 static 代碼塊。然后再進入main方法,執行new操作,當然顯而易見,在執行new子類操作的時候,是要先進行其父類的構造,即先執行父類的構造代碼塊(代碼中只用大括號包裹的那段代碼)以及構造函數 ,然后再執行子類的構造代碼塊以及構造函數。

修改一下代碼,再來看看運行的結果:

/**
 * Created by fei on 2017/5/31.
 */
public class SonClass extends ParentClass{
  ParentClass parentClass;
  public SonClass(){
    System.out.println("1");
  }
  public SonClass(String name){
    System.out.println("2");
    this.name = name;
    parentClass = new ParentClass("FEI");
  }

  public static void main(String[] args) {
    System.out.println("------ main start ------ ");
    new SonClass("fei");
    System.out.println("------ main end ------ ");
  }
}

class ParentClass{
  String name ;
  public ParentClass(){
    System.out.println("3");
  }
  public ParentClass(String name){
    System.out.println("4");
    this.name = name ;
  }
}

運行的順序是:

------ main start ------ 
3
2
4
------ main end ------ 

第一個規則:子類的構造過程中,必須調用其父類的構造方法。一個類,如果我們不寫構造方法,那么編譯器會幫我們加上一個默認的構造方法(就是沒有參數的構造方法),但是如果你自己寫了構造方法,那么編譯器就不會給你添加了,所以有時候當你new一個子類對象的時候,肯定調用了子類的構造方法,但是如果在子類構造方法中我們并沒有顯示的調用基類的構造方法,如:super(); 這樣就會調用父類沒有參數的構造方法。

第二個規則:如果子類的構造方法中既沒有顯示的調用基類構造方法,而基類中又沒有無參的構造方法,則編譯出錯,所以,通常我們需要顯示的:super(參數列表),來調用父類有參數的構造函數,此時無參的構造函數就不會被調用。

總之,一句話:子類沒有顯示調用父類構造函數,不管子類構造函數是否帶參數都默認調用父類無參的構造函數,若父類沒有則編譯出錯。

還是兩個類,我們再更改一下。

/**
 * Created by fei on 2017/5/31.
 */
public class SonClass extends ParentClass{
  private String name = "SonClass";

  public SonClass() {
    printName();
  }
  public void printName() {
    System.out.println("SonClass print name: " + name);
  }
  public static void main(String[] args){
    new SonClass();
  }
}

class ParentClass{
  private String name = "ParentClass";

  public ParentClass() {
    //System.out.println(this.getClass());
    printName();
  }
  public void printName() {
    System.out.println("ParentClass print name: " + name);
  }
}

看了上面的兩個例子,最后這個例子就很容易被迷惑,可能有人會覺得運行結果是類似這樣的:

ParentClass print name: ParentClass 
SonClass print name: SonClass

或者是:

ParentClass print name: SonClass
SonClass print name: SonClass

但真正的結果是這樣的:

SonClass print name: null
SonClass print name: SonClass

為什么會這樣,其實只要打開代碼中父類構造器中的這句注釋,就很容易理解了:System.out.println(this.getClass())
結果是:

class SonClass

沒錯,父類中的this引用是子類實例對象,所以在父類構造函數里調用的還是子類的printName()方法。具體原因也并我能十分肯定,我個人淺見,是因為雖然我們調用了父類的構造方法,但是我們并沒有實例化出父類的實例對象,所以this還是指向的是子類的引用。

關于深入淺析java中的繼承關系類的加載順序就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。


網站欄目:深入淺析java中的繼承關系類的加載順序
當前網址:http://www.xueling.net.cn/article/pojdgh.html

其他資訊

在線咨詢
服務熱線
服務熱線:028-86922220
TOP
主站蜘蛛池模板: 日日日夜夜操 | 91av官网| 欧美日韩在线视频首页 | 久久一区二区三区四区 | 亚洲激情第一页 | 亚欧美一区二区 | 97超碰在线视 | 国产∨亚洲V天堂无码久久久 | 日本片一区 | 91看片在线免费观看 | 黄色网站小视频 | 精品国产国产综合精品 | 91福利精品第一导航禁漫天堂 | 六月丁香婷婷色狠狠久久 | 国产精品美女久久久久人 | 爱爱视频免费网址 | 亚洲人成中文字幕在线观看 | 中文字幕成人动漫 | 妇女bbbb插插插视频 | 亚洲777理论| 国产亚洲精品网站 | aaa大片免费观看 | 免费h动漫无码网站 | 黄网站免费久久 | 涩涩涩av | 强奷乱码欧妇女中文字幕熟女 | 亚洲精品久久久打桩机小说 | 亚洲人成在线观看网站不卡 | 国产中文a | 无码爆乳护士让我爽 | 久久人人爽人人爽人人片AV麻烦 | 久久久www免费人成人片 | 无码H黄肉动漫在线观看 | 4虎av| 亚洲第一无码精品一区 | 亚洲小说图片 | 久久超碰在线 | 精品深夜AV无码一区二区老年 | 麻豆视频观看 | 久久久久亚洲av无码专区蜜芽 | 国产日韩欧美视频 |