内部類定義:
把類定義在其它類内部,這個類就被稱為内部類。
内部類的通路特點:
(1)内部類可以直接通路外部類的成員,包括私有
(2)外部類要通路内部類的成員,必須new對象。
内部類的分類:
(1)成員内部類:在成員位置定義的類
(2)局部内部類:在方法内部定義的類
成員内部類的直接調用:
格式:外部類名.内部類名 對象名 = 外部類對象.内部類對象。
例如:
class Outer
{
class Inner
{
public void show(){
System.out.println("Inner show");
}
}
}
class InnerClassTest
{
public static void main(String[] args){
// 調用格式
Outer.Inner oi = new Outer().new Inner();
oi.show();//輸出 Inner show
}
}
但是上述調用方法,有悖于我們的封裝思想。既然是定義在類内部的類,就是為了更好的提現封裝的思想。不能輕易讓外界通路,是以我們一般給成員内部類加 private 權限修飾,然後,我們可以通過外部類的一個公開的方法通路内部類。
靜态修飾後的内部類的調用:
靜态可以修飾内部類,是因為内部類可以看做是類的成員。
格式:外部類名.内部類名 對象名 = new 外部類名.内部類名();
例如:
class Outer
{
static class Inner
{
public void show(){
System.out.println("static Inner show");
}
public static void show2(){
System.out.println("static Inner show2");
}
}
}
class InnerClassTest
{
public static void main(String[] args){
// 調用格式
Outer.Inner oi = new Outer.Inner();
oi.show();//輸出 static Inner show
oi.show2();//輸出 static Inner show2
// 由于Inner是靜态類,并且show2是靜态方法,
// 我們還可以這樣調用 show2
Outer.Inner.show2();
}
}