内部类(innerclasses)
一般情況下,我們把類定義成獨立的單元。有些情況下,我們把一個類放在另一個類的內部定義為內部類。
內部類的作用:
1.內部類提供了更好的封裝。只能讓外部類直接訪問,不允許同一個包中的其他類直接訪問。
2.內部類可以直接訪問外部類的私有屬性,內部類被當成其外部類的成員。但外部類不能訪問內部類的內部屬性
內部類的適用場合:
由于內部類提供了更好的封裝特性,并且可以很方便的訪問外部類的屬性。所以,通常內部類在只為所在外部類提供服務的情況下優先使用。
?
內部類的分類:
1.成員內部類(可以使用private,proteted,public任意進行修飾。類文件:)
a)非靜態內部類(外部類里使用非靜態內部類和平時使用其他類沒什么不同)
i.非靜態內部類必須寄存在一個外部類對象里。因此,如果一個非靜態內部類對象那么一定存在對應外部類對象。非靜態內部類對象單獨屬于外部類的某個對象。
ii.非靜態內部類可以使用外部類的成員,但是外部類不能直接訪問非靜態內部類成員。
iii.非靜態內部類不能有靜態方法,靜態屬性,和靜態初始化塊。
iv.靜態成員不能訪問非靜態成員:外部類的靜態方法,靜態代碼塊不能訪問非靜態內部類,包括不能使用非靜態內部類定義變量,創建實例。
v.成員變量的訪問要點:
1.內部類里方法的局部變量:方法名
2.內部類屬性:this.變量名
3.外部類屬性:外部類名.this.變量名
vi.內部類的訪問:
1.外部類中定義內部類:new innerClass();
2.外部類以外的地方使用非靜態內部類:
Outer.inner varname=OuterObject.new Inner()
Face.Nose nose=new Face().new Nose();
Face f2=new Face();
Face.Nose nose2=f2.new Nose();
b)靜態內部類:
i.定義方式:
static class ClassName{
//類體
}
ii.使用要點:
1.當一個靜態內部類對象存在,并不一定存在對應的外部類對象。因此靜態內部類的實例方法不能直接訪問外部類的實例方法。
2.靜態內部類看作外部類的一個靜態成員。因此,外部類的方法中可以通過:靜態內部類.名字 訪問靜態內部類的靜態成員。通過new靜態內部類()訪問靜態內部類的實例。
2.匿名內部類
適合哪種只需要使用一次的類。
new 父類構造器(實參類表) 實現接口(){
//匿名內部類類體
}
局部內部類
定義在方法內部。作用域只限于本方法。
?
轉載于:https://www.cnblogs.com/javatask/p/6789948.html
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的内部类(innerclasses)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: bc8-android导航,路畅A6导航
- 下一篇: Java程序员如何写好一份个人求职简历