在 Java 中,靜態(tài)內(nèi)部類(lèi)是一種嵌套在另一個(gè)類(lèi)中的類(lèi),它被聲明為靜態(tài)的,因此不需要引用外部類(lèi)的實(shí)例。靜態(tài)內(nèi)部類(lèi)與非靜態(tài)內(nèi)部類(lèi)(也稱(chēng)為成員內(nèi)部類(lèi))不同,非靜態(tài)內(nèi)部類(lèi)可以訪(fǎng)問(wèn)外部類(lèi)的成員變量和方法,而靜態(tài)內(nèi)部類(lèi)只能訪(fǎng)問(wèn)外部類(lèi)的靜態(tài)成員變量和方法。
靜態(tài)內(nèi)部類(lèi)的語(yǔ)法如下:
在上面的代碼中,InnerClass 是一個(gè)靜態(tài)內(nèi)部類(lèi),可以通過(guò) OuterClass.InnerClass 的方式訪(fǎng)問(wèn)它。靜態(tài)內(nèi)部類(lèi)可以像普通類(lèi)一樣使用,包括創(chuàng)建實(shí)例、調(diào)用方法等。靜態(tài)內(nèi)部類(lèi)還可以訪(fǎng)問(wèn)外部類(lèi)的靜態(tài)成員變量和方法,例如:
在上面的代碼中,InnerClass 訪(fǎng)問(wèn)了外部類(lèi)的靜態(tài)成員變量 staticField,但不能訪(fǎng)問(wèn)外部類(lèi)的實(shí)例變量 instanceField。
靜態(tài)內(nèi)部類(lèi)通常用于實(shí)現(xiàn)某個(gè)接口或抽象類(lèi),或者為外部類(lèi)提供一些靜態(tài)輔助方法或常量。它也可以用于將一些較小的類(lèi)封裝在一個(gè)類(lèi)中,以便更好地組織代碼。
總之,靜態(tài)內(nèi)部類(lèi)是一種嵌套在另一個(gè)類(lèi)中的靜態(tài)類(lèi),它與外部類(lèi)的實(shí)例無(wú)關(guān),只能訪(fǎng)問(wèn)外部類(lèi)的靜態(tài)成員變量和方法。靜態(tài)內(nèi)部類(lèi)可以像普通類(lèi)一樣使用,可以用于實(shí)現(xiàn)接口、提供靜態(tài)輔助方法等。