Java內(nèi)部類應(yīng)用之靜態(tài)內(nèi)部類應(yīng)用示例
本文實(shí)例講述了Java內(nèi)部類應(yīng)用之靜態(tài)內(nèi)部類。分享給大家供大家參考,具體如下:
一 點(diǎn)睛
如果使用static來修飾一個(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)部類不能訪問外部類的實(shí)例成員,只能訪問外部類的類成員
1 點(diǎn)睛
靜態(tài)內(nèi)部類可以包含靜態(tài)成員,也可以包含非靜態(tài)成員。根據(jù)靜態(tài)成員不能訪問非靜態(tài)成員的規(guī)則,靜態(tài)內(nèi)部類不能訪問外部類的實(shí)例成員,只能訪問外部類的類成員。即使是靜態(tài)內(nèi)部類的實(shí)例方法也不能訪問外部類的實(shí)例成員,只能訪問外部類的靜態(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)部類無法訪問外部類的實(shí)例變量 //System.out.println(prop1); // 下面代碼正常 System.out.println(prop2); } } }
3 說明
accessOuterProp是一個(gè)實(shí)例方法,但依然不能訪問外部類的prop1成員變量,因?yàn)檫@是實(shí)例變量。但可以訪問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)部類來定義變量、創(chuàng)建對(duì)象。
外部類依然不能直接訪問靜態(tài)內(nèi)部類的成員,但可以使用靜態(tài)內(nèi)部類的類名作為調(diào)用者來訪問靜態(tài)內(nèi)部類的類成員,也可以使用靜態(tài)內(nèi)部類對(duì)象作為調(diào)用者來訪問靜態(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)改為如下形式: // 通過類名訪問靜態(tài)內(nèi)部類的類成員 System.out.println(StaticInnerClass.prop1); // System.out.println(prop2); // 上面代碼出現(xiàn)錯(cuò)誤,應(yīng)改為如下形式: // 通過實(shí)例訪問靜態(tài)內(nèi)部類的實(shí)例成員 System.out.println(new StaticInnerClass().prop2); } }
更多java相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Java面向?qū)ο蟪绦蛟O(shè)計(jì)入門與進(jìn)階教程》、《Java數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Java操作DOM節(jié)點(diǎn)技巧總結(jié)》、《Java文件與目錄操作技巧匯總》和《Java緩存操作技巧匯總》
希望本文所述對(duì)大家java程序設(shè)計(jì)有所幫助。
相關(guān)文章
一文搞懂java中類及static關(guān)鍵字執(zhí)行順序
這篇文章主要介紹了一文搞懂java中類及static關(guān)鍵字執(zhí)行順序,文章通過類的生命周期展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-09-09SpringBoot3.0+SpringSecurity6.0+JWT的實(shí)現(xiàn)
本文主要介紹了SpringBoot3.0+SpringSecurity6.0+JWT的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-11-11IntelliJ Idea 2020.1 正式發(fā)布,官方支持中文(必看)
這篇文章主要介紹了IntelliJ Idea 2020.1 正式發(fā)布,官方支持中文了,本文通過截圖的形式給大家展示,對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-04-04Java中stream處理中map與flatMap的比較和使用案例
這篇文章主要介紹了Java中stream處理中map與flatMap的比較和使用案例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03cascade級(jí)聯(lián)關(guān)系操作案例詳解
這篇文章主要介紹了cascade級(jí)聯(lián)關(guān)系,主要包括級(jí)聯(lián)保存,級(jí)聯(lián)修改,級(jí)聯(lián)刪除案例,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2022-07-07