溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Java中靜態(tài)內(nèi)部類如何使用

發(fā)布時(shí)間:2021-06-25 16:20:45 來(lái)源:億速云 閱讀:364 作者:Leah 欄目:編程語(yǔ)言

這期內(nèi)容當(dāng)中小編將會(huì)給大家?guī)?lái)有關(guān)Java中靜態(tài)內(nèi)部類如何使用,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

一 點(diǎn)睛

如果使用static來(lái)修飾一個(gè)內(nèi)部類,則這個(gè)內(nèi)部類就屬于外部類本身,而不屬于外部類的某個(gè)對(duì)象。因此使用static修飾的內(nèi)部類被稱為類內(nèi)部類,也稱為靜態(tài)內(nèi)部類。

static關(guān)鍵字不可修飾外部類,但可修飾內(nèi)部類。

二 實(shí)戰(zhàn)——靜態(tài)內(nèi)部類不能訪問(wèn)外部類的實(shí)例成員,只能訪問(wèn)外部類的類成員

1 點(diǎn)睛

靜態(tài)內(nèi)部類可以包含靜態(tài)成員,也可以包含非靜態(tài)成員。根據(jù)靜態(tài)成員不能訪問(wèn)非靜態(tài)成員的規(guī)則,靜態(tài)內(nèi)部類不能訪問(wèn)外部類的實(shí)例成員,只能訪問(wèn)外部類的類成員。即使是靜態(tài)內(nèi)部類的實(shí)例方法也不能訪問(wèn)外部類的實(shí)例成員,只能訪問(wèn)外部類的靜態(tài)成員。

2 代碼

public class StaticInnerClassTest{  private int prop1 = 5;  private static int prop2 = 9;  static class StaticInnerClass  {   // 靜態(tài)內(nèi)部類里可以包含靜態(tài)成員   private static int age;   public void accessOuterProp()   {     // 下面代碼出現(xiàn)錯(cuò)誤:     // 靜態(tài)內(nèi)部類無(wú)法訪問(wèn)外部類的實(shí)例變量     //System.out.println(prop1);     // 下面代碼正常     System.out.println(prop2);   }  }}

3 說(shuō)明

accessOuterProp是一個(gè)實(shí)例方法,但依然不能訪問(wèn)外部類的prop1成員變量,因?yàn)檫@是實(shí)例變量。但可以訪問(wèn)prop2,因?yàn)樗庆o態(tài)成員變量。

三 實(shí)戰(zhàn)——外部類使用靜態(tài)內(nèi)部類

1 點(diǎn)睛

靜態(tài)內(nèi)部類是外部類的一個(gè)靜態(tài)成員,因此外部類的所有方法、所有初始化塊可以使用靜態(tài)內(nèi)部類來(lái)定義變量、創(chuàng)建對(duì)象。

外部類依然不能直接訪問(wèn)靜態(tài)內(nèi)部類的成員,但可以使用靜態(tài)內(nèi)部類的類名作為調(diào)用者來(lái)訪問(wèn)靜態(tài)內(nèi)部類的類成員,也可以使用靜態(tài)內(nèi)部類對(duì)象作為調(diào)用者來(lái)訪問(wèn)靜態(tài)內(nèi)部類的實(shí)例成員。

2 代碼

public class AccessStaticInnerClass{  static class StaticInnerClass  {   private static int prop1 = 5;   private int prop2 = 9;  }  public void accessInnerProp()  {   // System.out.println(prop1);   // 上面代碼出現(xiàn)錯(cuò)誤,應(yīng)改為如下形式:   // 通過(guò)類名訪問(wèn)靜態(tài)內(nèi)部類的類成員   System.out.println(StaticInnerClass.prop1);   // System.out.println(prop2);   // 上面代碼出現(xiàn)錯(cuò)誤,應(yīng)改為如下形式:   // 通過(guò)實(shí)例訪問(wèn)靜態(tài)內(nèi)部類的實(shí)例成員   System.out.println(new StaticInnerClass().prop2);  }}

上述就是小編為大家分享的Java中靜態(tài)內(nèi)部類如何使用了,如果剛好有類似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI