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

淺談Java父子類加載順序

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

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

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

這么長怎么記呀?!

這里幫大家小結(jié)幾個(gè)特點(diǎn):

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

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

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

2. 成員變量 > 成員方法 > 構(gòu)造方法

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

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

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

測(cè)試代碼如下:

/**
 * @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();
 }
}

運(yùn)行結(jié)果如下:

[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

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

相關(guān)文章

  • java 調(diào)用本地?fù)P聲器的步驟

    java 調(diào)用本地?fù)P聲器的步驟

    博主的畢設(shè)系統(tǒng)在做一個(gè)餐廳的點(diǎn)餐管理系統(tǒng),在進(jìn)行移動(dòng)端頁面開發(fā)的時(shí)候突發(fā)奇想做一個(gè)呼叫功能,因此就有了這篇文章
    2021-05-05
  • 最新評(píng)論

    岱山县| 盐源县| 太谷县| 桓仁| 宁明县| 南涧| 乌苏市| 蛟河市| 荔波县| 阜宁县| 长汀县| 白银市| 安阳县| 天台县| 阿克| 逊克县| 通江县| 行唐县| 上蔡县| 宜阳县| 如皋市| 偃师市| 武清区| 正宁县| 台中市| 廊坊市| 肃北| 射洪县| 广宁县| 南部县| 彩票| 长葛市| 斗六市| 新田县| 会宁县| 高淳县| 梧州市| 云梦县| 冀州市| 大庆市| 海盐县|