最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

淺談Java父子類加載順序

 更新時間:2021年08月03日 16:12:33   作者:不熬夜的程序猿  
本文主要介紹了Java父子類加載順序,那么這么長怎么記呀?本文就幫大家總結一下,更有利于記憶,感興趣的可以了解一下

先上桌結論,優(yōu)先被加載的順序如下:

父類靜態(tài)成員變量 > 父類靜態(tài)代碼塊 > 子類靜態(tài)成員變量 > 子類靜態(tài)代碼塊 > 父類非靜態(tài)成員變量 > 父類非靜態(tài)代碼塊 > 父類構造方法 > 子類非靜態(tài)成員變量 > 子類非靜態(tài)代碼塊 > 子類構造方法

這么長怎么記呀?!

這里幫大家小結幾個特點:

  • 成員變量 > 代碼塊 > 構造方法(構造器)。
  • 靜態(tài)(共有) > 非靜態(tài)(私有)。
  • 子類靜態(tài) > 父類非靜態(tài)(私有)。

1. 靜態(tài) > 非靜態(tài)

當且僅當該類在程序中第一次被 new(是第一次被類加載器調用時)才會觸發(fā)(不考慮永久代的回收),但只調用 Main.class 是不會觸發(fā)的喲。
其實這也是 類優(yōu)先于對象被加載 的體現(xiàn)。

2. 成員變量 > 成員方法 > 構造方法

  1. 可以這么理解,加載這整個類,需要先知道類具有哪些成員變量,并且這些屬性初始化 (private String A = ""; 或者 private String A;) 完畢之后,這個類的對象才算是完整的。
  2. 其實 初始化非靜態(tài)成員變量 就是 new 對象的準備工作之一,等效于一個不接受任何類外部參數(shù)的構造方法。非靜態(tài)代碼塊也同理。因此,成員變量 > 非靜態(tài)代碼塊 > 構造方法。

3. 子類靜態(tài) > 父類非靜態(tài)

結合第一條,也比較容易得出這一條規(guī)律。

測試代碼如下:

/**
 * @author Ander.Li
 */
public class Main {

 static class A {
  static Hi hi = new Hi("A");

  Hi hi2 = new Hi("A2");

                // 靜態(tài)代碼塊
  static {
   System.out.println("A static");
  }

                // 非靜態(tài)代碼塊
  {
   System.out.println("A non static");
  }

  public A() {
   System.out.println("A init");
  }
 }

        // B 是 A 的子類
 static class B extends A {
  static Hi hi = new Hi("B");

  Hi hi2 = new Hi("B2");

                // 靜態(tài)代碼塊
  static {
   System.out.println("B static");
  }

                // 非靜態(tài)代碼塊
  {
   System.out.println("B non static");
  }

  public B() {
   System.out.println("B init");
  }
 }

 static class Hi {
  public Hi(String str) {
   System.out.println("Hi " + str);
  }
 }

 public static void main(String[] args) {
  System.out.println("[First] new B:");
  B b = new B();
  System.out.println();
  System.out.println("[Second] new B:");
  b = new B();
 }
}

運行結果如下:

[First] new B:
Hi A
A static
Hi B
B static
Hi A2
A non static
A init
Hi B2
B non static
B init

[Second] new B:
Hi A2
A non static
A init
Hi B2
B non static
B init

到此這篇關于Java父子類加載順序的實現(xiàn)的文章就介紹到這了,更多相關Java父子類加載順序內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

最新評論

桃园县| 固原市| 邵阳市| 白玉县| 屏东市| 义乌市| 壤塘县| 恩平市| 庆云县| 孟州市| 马尔康县| 忻城县| 江口县| 常州市| 上犹县| 日土县| 萝北县| 安图县| 姜堰市| 钦州市| 上高县| 宣城市| 剑河县| 乐安县| 武鸣县| 寿宁县| 昌乐县| 上栗县| 留坝县| 广昌县| 三明市| 南涧| 阳东县| 开封市| 广平县| 商都县| 永川市| 朝阳市| 富民县| 海宁市| 古田县|