靜態(tài)內(nèi)部類(lèi)(Static Inner Class)是指定義在外部類(lèi)內(nèi)部的一個(gè)靜態(tài)類(lèi)。靜態(tài)內(nèi)部類(lèi)與普通內(nèi)部類(lèi)的最大差別在于,靜態(tài)內(nèi)部類(lèi)可以直接訪(fǎng)問(wèn)外部類(lèi)的靜態(tài)成員和方法,而無(wú)需創(chuàng)建一個(gè)外部類(lèi)的實(shí)例。
靜態(tài)內(nèi)部類(lèi)的定義方式和普通內(nèi)部類(lèi)相似,只需要在類(lèi)定義前面添加 static 關(guān)鍵字即可。例如:
public class OuterClass {
// 外部類(lèi)靜態(tài)變量
private static int num = 10;
// 靜態(tài)內(nèi)部類(lèi)
public static class InnerClass {
public void print() {
System.out.println("靜態(tài)內(nèi)部類(lèi)訪(fǎng)問(wèn)外部類(lèi)的靜態(tài)變量:" + num);
}
}
}
使用靜態(tài)內(nèi)部類(lèi)的好處在于,可以將具有獨(dú)立功能的類(lèi)封裝在一起,便于組織、管理和維護(hù)代碼,同時(shí)也可以避免了外部類(lèi)中代碼的冗長(zhǎng)。靜態(tài)內(nèi)部類(lèi)的代碼編寫(xiě)和普通類(lèi)類(lèi)似,可以在外部類(lèi)的任何地方創(chuàng)建它的對(duì)象,但需要使用外部類(lèi)對(duì)它進(jìn)行限定,例如:
// 創(chuàng)建靜態(tài)內(nèi)部類(lèi)對(duì)象
OuterClass.InnerClass innerClass = new OuterClass.InnerClass();
// 調(diào)用靜態(tài)內(nèi)部類(lèi)的方法
innerClass.print();
需要注意的是,靜態(tài)內(nèi)部類(lèi)和普通內(nèi)部類(lèi)在使用時(shí)有一些區(qū)別,在創(chuàng)建它的對(duì)象時(shí)需要使用不同的語(yǔ)法,具體可參考 Java 內(nèi)部類(lèi)的相關(guān)文檔。