更新時(shí)間:2022-12-14 來(lái)源:黑馬程序員 瀏覽量:
靜態(tài)內(nèi)部類(lèi),就是使用static關(guān)鍵字修飾的成員內(nèi)部類(lèi)。與成員內(nèi)部類(lèi)相比,在形式上,靜態(tài)內(nèi)部類(lèi)只是在內(nèi)部類(lèi)前增加了static關(guān)鍵字,但在功能上,靜態(tài)內(nèi)部類(lèi)只能訪問(wèn)外部類(lèi)的靜態(tài)成員,通過(guò)外部類(lèi)訪問(wèn)靜態(tài)內(nèi)部類(lèi)成員時(shí),可以跳過(guò)外部類(lèi)直接訪問(wèn)靜態(tài)內(nèi)部類(lèi)。
創(chuàng)建靜態(tài)內(nèi)部類(lèi)對(duì)象的基本語(yǔ)法格式如下:
外部類(lèi)名.靜態(tài)內(nèi)部類(lèi)名 變量名 = new 外部類(lèi)名 ().靜態(tài)內(nèi)部類(lèi)名 ();
下面通過(guò)一個(gè)案例學(xué)習(xí)靜態(tài)內(nèi)部類(lèi)的定義和使用,如文件4-22所示。
文件4-22 Example22.java
class Outer { static int m = 0; // 定義類(lèi)的成員變量 // 下面的代碼定義了一個(gè)靜態(tài)內(nèi)部類(lèi) static class Inner { int n = 1; void show () { // 在靜態(tài)內(nèi)部類(lèi)的方法中訪問(wèn)外部類(lèi)的成員變量 System.out.println("外部靜態(tài)變量m = " +m); } } } public class Example22 { public static void main (String[] args) { Outer.Inner inner = new Outer.Inner () ; inner.show(); } }
文件4-22的運(yùn)行結(jié)果如圖4-22所示。
圖4-22 文件4-22的運(yùn)行結(jié)果
在文件4-22中,第1~11行代碼定義了一個(gè)外部類(lèi)Outer,其中第2~10行代碼是在Outer類(lèi)中定義了靜態(tài)成員變量和靜態(tài)內(nèi)部類(lèi)Inner。然后在靜態(tài)內(nèi)部類(lèi)Inner中,編寫(xiě)了一個(gè)show()方法,在show()方法中打印了外部靜態(tài)變量m,第14~15行代碼聲明了一個(gè)內(nèi)部類(lèi)對(duì)象inner,并使用inner對(duì)象調(diào)用show()方法測(cè)試對(duì)外部類(lèi)靜態(tài)變量m的調(diào)用。