更新時間:2022-08-29 10:58:30 來源:動力節點 瀏覽1499次
Java內部類在另一個類(也稱為外部類)中聲明,并且可以訪問外部類的私有成員。編譯器生成一個作為外部類成員的類,并且正是這個生成的類可以訪問創建它的范圍內的私有變量或方法(例如,在另一個方法內)。
靜態嵌套內部類與其他靜態成員類似,因為它們無法訪問外部類的實例變量。相反,非靜態內部類可以訪問外部類的實例變量,因此能夠創建外部類的實例。
Java 中的內部類比傳統類提供了許多好處。它們可用于訪問外部類的私有成員,可用于創建外部類的實例,還可用于創建匿名內部類。
但是,在 Java 中使用內部類也有一些缺點。它們會使您的代碼更難閱讀和調試,并且會增加代碼的整體復雜性。
內部類分為四種類型:靜態、非靜態、本地和匿名。
靜態內部類
這些是最簡單的內部類。靜態內部類是在類內部聲明并標記為靜態的那些。需要注意的是,這些類只能使用外部類的實例來訪問。您可以利用靜態嵌套類將相關類組合在一起。
非靜態內部類
顧名思義,非靜態內部類與外部類的實例相關聯。外部類的所有成員(變量和方法)都可以從這些類中訪問。
本地內部類
本地內部類在方法中定義。它們可以訪問封閉類的所有成員(變量和方法),但不能從定義它們的方法之外實例化它們。本地定義的內部類只能在其定義的方法內實例化。
方法本地內部類只能在定義它的方法內訪問,并且不能被定義它的方法之外的任何其他代碼引用。方法局部內部類可以從封閉范圍訪問局部變量(包括最終變量)。
匿名內部類
沒有名稱的內部類也稱為匿名內部類。匿名內部類的聲明和實例化同時發生。匿名內部類不能有顯式構造函數,就像所有本地內部類一樣。當您必須只使用一次本地內部類時,匿名內部類很有用。
以下是在 Java 中使用內部類時要記住的一些重要事項:
內部類可以聲明為公共的、私有的或受保護的。
內部類可以擴展任何類并實現任何接口。
需要注意的是,如果一個內部類已經被標記為靜態,它就不能訪問外部類的非靜態成員。它可以訪問外部類的靜態成員。
如果沒有外部類的實例,就不能創建內部類或嵌套類的實例。
內部類可用于編寫更模塊化和可重用的代碼。
以下代碼示例說明了如何在 Java 中實現內部類:
公共類 MyOuterClass {
公共類 MyInnerClass {
公共無效顯示(){
System.out.println("內部類");
}
}
公共靜態無效主要(字符串[]參數){
MyOuterClass objOuterClass = new MyOuterClass();
MyOuterClass.MyInnerClass objInnerClass = objOuterClass.new MyInnerClass();
objInnerClass.display();
}
}
以下代碼清單說明了如何在 Java 中實現靜態內部類:
導入 java.util.*;
類 MyOuterClass {
私有靜態無效方法A()
{
System.out.println("MyOuterClass 的內部方法A");
}
靜態類 MyInnerClass {
公共靜態無效方法B()
{
System.out.println("MyInnerClass 的內部方法B");
方法A();
}
}
}
公共類 InnerClassDemo {
公共靜態無效主(字符串參數 [])
{
MyOuterClass.MyInnerClass obj = new MyOuterClass.MyInnerClass();
obj.methodB();
}
}
以上就是關于“Java內部類的介紹及作用”的介紹,大家如果想了解更多相關知識,可以關注一下動力節點的Java基礎教程,里面的課程內容細致全面,適合沒有基礎的小伙伴學習,希望對大家能夠有所幫助。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習