更新時間:2022-08-29 10:58:30 來源:動力節(jié)點 瀏覽1619次
Java內(nèi)部類在另一個類(也稱為外部類)中聲明,并且可以訪問外部類的私有成員。編譯器生成一個作為外部類成員的類,并且正是這個生成的類可以訪問創(chuàng)建它的范圍內(nèi)的私有變量或方法(例如,在另一個方法內(nèi))。
靜態(tài)嵌套內(nèi)部類與其他靜態(tài)成員類似,因為它們無法訪問外部類的實例變量。相反,非靜態(tài)內(nèi)部類可以訪問外部類的實例變量,因此能夠創(chuàng)建外部類的實例。
Java 中的內(nèi)部類比傳統(tǒng)類提供了許多好處。它們可用于訪問外部類的私有成員,可用于創(chuàng)建外部類的實例,還可用于創(chuàng)建匿名內(nèi)部類。
但是,在 Java 中使用內(nèi)部類也有一些缺點。它們會使您的代碼更難閱讀和調(diào)試,并且會增加代碼的整體復(fù)雜性。
內(nèi)部類分為四種類型:靜態(tài)、非靜態(tài)、本地和匿名。
靜態(tài)內(nèi)部類
這些是最簡單的內(nèi)部類。靜態(tài)內(nèi)部類是在類內(nèi)部聲明并標(biāo)記為靜態(tài)的那些。需要注意的是,這些類只能使用外部類的實例來訪問。您可以利用靜態(tài)嵌套類將相關(guān)類組合在一起。
非靜態(tài)內(nèi)部類
顧名思義,非靜態(tài)內(nèi)部類與外部類的實例相關(guān)聯(lián)。外部類的所有成員(變量和方法)都可以從這些類中訪問。
本地內(nèi)部類
本地內(nèi)部類在方法中定義。它們可以訪問封閉類的所有成員(變量和方法),但不能從定義它們的方法之外實例化它們。本地定義的內(nèi)部類只能在其定義的方法內(nèi)實例化。
方法本地內(nèi)部類只能在定義它的方法內(nèi)訪問,并且不能被定義它的方法之外的任何其他代碼引用。方法局部內(nèi)部類可以從封閉范圍訪問局部變量(包括最終變量)。
匿名內(nèi)部類
沒有名稱的內(nèi)部類也稱為匿名內(nèi)部類。匿名內(nèi)部類的聲明和實例化同時發(fā)生。匿名內(nèi)部類不能有顯式構(gòu)造函數(shù),就像所有本地內(nèi)部類一樣。當(dāng)您必須只使用一次本地內(nèi)部類時,匿名內(nèi)部類很有用。
以下是在 Java 中使用內(nèi)部類時要記住的一些重要事項:
內(nèi)部類可以聲明為公共的、私有的或受保護的。
內(nèi)部類可以擴展任何類并實現(xiàn)任何接口。
需要注意的是,如果一個內(nèi)部類已經(jīng)被標(biāo)記為靜態(tài),它就不能訪問外部類的非靜態(tài)成員。它可以訪問外部類的靜態(tài)成員。
如果沒有外部類的實例,就不能創(chuàng)建內(nèi)部類或嵌套類的實例。
內(nèi)部類可用于編寫更模塊化和可重用的代碼。
以下代碼示例說明了如何在 Java 中實現(xiàn)內(nèi)部類:
公共類 MyOuterClass {
公共類 MyInnerClass {
公共無效顯示(){
System.out.println("內(nèi)部類");
}
}
公共靜態(tài)無效主要(字符串[]參數(shù)){
MyOuterClass objOuterClass = new MyOuterClass();
MyOuterClass.MyInnerClass objInnerClass = objOuterClass.new MyInnerClass();
objInnerClass.display();
}
}
以下代碼清單說明了如何在 Java 中實現(xiàn)靜態(tài)內(nèi)部類:
導(dǎo)入 java.util.*;
類 MyOuterClass {
私有靜態(tài)無效方法A()
{
System.out.println("MyOuterClass 的內(nèi)部方法A");
}
靜態(tài)類 MyInnerClass {
公共靜態(tài)無效方法B()
{
System.out.println("MyInnerClass 的內(nèi)部方法B");
方法A();
}
}
}
公共類 InnerClassDemo {
公共靜態(tài)無效主(字符串參數(shù) [])
{
MyOuterClass.MyInnerClass obj = new MyOuterClass.MyInnerClass();
obj.methodB();
}
}
以上就是關(guān)于“Java內(nèi)部類的介紹及作用”的介紹,大家如果想了解更多相關(guān)知識,可以關(guān)注一下動力節(jié)點的Java基礎(chǔ)教程,里面的課程內(nèi)容細致全面,適合沒有基礎(chǔ)的小伙伴學(xué)習(xí),希望對大家能夠有所幫助。
相關(guān)閱讀