內部類 靜態內部類 延遲載入

2021-10-02 01:56:20 字數 1506 閱讀 8842

外部類載入順序:

1、外部類初次載入,會初始化靜態變數、靜態**塊、靜態方法,但不會載入內部類和靜態內部類。

2、例項化外部類,呼叫外部類的靜態方法、靜態變數,則外部類必須先進行載入,但只載入一次。

3、直接呼叫靜態內部類時,外部類不會載入。

內部類載入順序:

在初次呼叫的時候載入,且只載入一次

package com.panda;

/** * author: ysd

* date: 2020/1/9

* description:內部類、靜態內部類,延遲載入

*/public class pandainnerclass

public pandainnerclass()

public pandainnerclass(string flag)

class innerclass

static class staticinnerclass

public static void load()

}public static pandainnerclass getinstance()

public static void main(string args)

}

執行結果

我是 pandainnerclass 的靜態**塊。。

let us go ..

我是 pandainnerclass 的有參構造,引數是靜態內部類。。

我是靜態內部類的 staticinnerclass 的靜態**塊。。

靜態load方法。。

我是 pandainnerclass 的有參構造,引數是普通內部類。。

解釋:

1、jvm執行main方法,載入pandainnerclass 類,載入靜態**塊,輸出我是 pandainnerclass 的靜態**塊。。

2、執行 system.out.println(「let us go …」); 控制台輸出let us go .

.3、執行pandainnerclass.staticinnerclass.load();呼叫靜態內部類staticinnerclass,載入staticinnerclass,

先載入她得靜態屬性,執行pandainnerclass的有參構造,輸出我是 pandainnerclass 的有參構造,引數是靜態內部類。。

然後載入靜態**塊,輸出我是靜態內部類的 staticinnerclass 的靜態**塊。。,

然後呼叫load方法,輸出靜態load方法。。

4、執行 pandainnerclass hello = ok.new innerclass().innerclass;呼叫內部類innerclass,載入內部類innerclass,呼叫innerclass屬性,執行pandainnerclass的建構函式,輸出我是 pandainnerclass 的有參構造,引數是普通內部類。。

內部類 靜態內部類

static可以修飾內部類,通常用來給外部類賦值 例如 建造者模式 靜態內部類不能使用外部類非靜態的屬性,必須用物件名呼叫 在外部類中 建立靜態內部類可以直接建立,不需要建立外部類 不能使用成員內部類的方式建立靜態內部類物件 內部類 物件名 new 內部類 外部類.內部類 物件名 new 外部類.內...

內部類 靜態內部類

package org.lgy.study.innerclass 靜態內部類屬於外部類本身,而不屬於外部類的物件。使用靜態內部類時無需建立外部類的物件。public class staticinnerclass public static void method2 public void metho...

內部類 靜態內部類

即定義在類或方法體內部的類,經常被使用於gui android程式設計中的事件處理 測試外部類等 public class outer class inner 即為內部類 在例項化內部類之前應該先 例項化外部類 方案一outer outer new outer inner inner outer.n...