您好,登錄后才能下訂單哦!
這期內容當中小編將會給大家帶來有關Java中有哪些內部類,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
??每個內部類都能獨立地繼承自一個(接口的)實現,所以無論外部類是否已經繼承了某個(接口的)實現,對于內部類沒有影響。
成員內部類
為啥?因為靜態變量和方法不依賴對象,僅與類有關。在加載靜態域時,根本沒有外部類。所以在非靜態內部類中不能定義static變量和方法,編譯會不通過。
內部類對于外部類來說,相當于一個成員變量。內部類可以使用任意訪問控制符
內部類的方法可以直接訪問外部類的數據,而不受訪問控制符的影響
創建內部類對象方法:外部類.內部類 對象名 = 外部類對象.new 內部類()
編譯之后產生兩個class文件:Outer.class 和 Outer$Inner.class
內部類中不能存在任何static的變量和方法
靜態內部類:用static修飾的內部類
靜態內部類訪問外部類的非靜態成員:不能直接訪問,需要 new 外部類().成員
如果訪問外部類的static成員(名稱與內部類相同):“類名.靜態成員”
如果訪問外部類的static成員(名稱與內部類不相同):"靜態成員名"
創建靜態內部類對象(不需要外部類對象):外部類.內部類 對象名 = new 外部類.內部類()
方法內部類:訪問僅限與方法內(或者該作用域內)
局部內部類就像方法里的局部變量一樣,不能用public protected private static修飾的
只能訪問方法中定義的final類型的局部變量。原因:局部變量會隨著方法體執行完而消亡。但內部類對象還存在。(導致內部類要訪問一個不存在的局部變量)(使用final不僅會保持對象的引用,還會讓編譯器持續維護這個對象在回調方法中的生命周期)(局部內部類并不是直接調用方法傳進來的參數,而是內部類通過構造器將參數備份一份)
匿名內部類
匿名內部類直接使用 new 來生成一個對象的引用
缺點:僅能被使用一次
使用匿名內部類必須繼承一個類或者實現一個接口(兩者不可兼得)
匿名內部類不能有構造函數,不能存在任何靜態成員變量和靜態方法
匿名內部類不能是抽象的必須實現繼承的類或者實現的接口的所有抽象方法
匿名內部列初始化:使用構造代碼塊。使用構造代碼塊能夠達到為匿名內部類創建一個構造器的效果。
上述就是小編為大家分享的Java中有哪些內部類了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。