JAVA技術專題綜述之內部類篇
有些類的定義中包含另一個類的定義。這種處于內部的類稱為內部類(inner class)。
例如:
InnerClass類嵌套在OuterClass中,并且被聲明為public,因此被OuterClass類之外的對象訪問。
InnerClass類沒有被聲明為OuterClass類的一個靜態成員,因此除非生成了一個OuterClass對象,否則無法生成任何InnerClass對象。但是,當你聲明一個包含嵌套類的類對象時,并不一定會生成嵌套類的對象,這主要由包含嵌套類的類的構造方法決定。
示例1:
我們使用OuterClass out = new OuterClass();語句生成了一個OuterClass類對象。然后又使用OuterClass.InnerClass in = out.new InnerClass();語句借助外部類的實例生成了一個內部類的對象。main()方法中的兩條語句也可以用下面的這一條語句替換:
OuterClass.InnerClass in = new OuterClass().new InnerClass();
總之:在一個類(Test)中,創建另一個類(OuterClass)中的非靜態內部類(InnerClass)必須要借助這個外部類(OuterClass)的一個實例。而且這個內部類對象的聲明也必須用OuterClass.InnerClass的形式。
示例2:
在main()方法中實例化本類的內部類可以用上例的形式。
示例3:
在main()方法外,實例化本類的內部類就和我們平常的操作一樣了。
示例4:
例如:
| public class OuterClass { public class InnerClass { //---This is a inner class. } } |
InnerClass類嵌套在OuterClass中,并且被聲明為public,因此被OuterClass類之外的對象訪問。
InnerClass類沒有被聲明為OuterClass類的一個靜態成員,因此除非生成了一個OuterClass對象,否則無法生成任何InnerClass對象。但是,當你聲明一個包含嵌套類的類對象時,并不一定會生成嵌套類的對象,這主要由包含嵌套類的類的構造方法決定。
示例1:
| class OuterClass { class InnerClass {} } public class Test { public static void main(String[] args) { OuterClass out = new OuterClass(); OuterClass.InnerClass in = out.new InnerClass(); } } |
我們使用OuterClass out = new OuterClass();語句生成了一個OuterClass類對象。然后又使用OuterClass.InnerClass in = out.new InnerClass();語句借助外部類的實例生成了一個內部類的對象。main()方法中的兩條語句也可以用下面的這一條語句替換:
OuterClass.InnerClass in = new OuterClass().new InnerClass();
總之:在一個類(Test)中,創建另一個類(OuterClass)中的非靜態內部類(InnerClass)必須要借助這個外部類(OuterClass)的一個實例。而且這個內部類對象的聲明也必須用OuterClass.InnerClass的形式。
示例2:
| public class Test { class InnerClass {} 1 public static void main(String[] args) { InnerClass in = new Test().new InnerClass(); } } |
在main()方法中實例化本類的內部類可以用上例的形式。
示例3:
| public class Test { class InnerClass {} InnerClass in = new InnerClass(); public static void main(String[] args) {} } |
在main()方法外,實例化本類的內部類就和我們平常的操作一樣了。
示例4:
| public class Test { class InnerClass {} public void method() { InnerClass in = new InnerClass(); } public static void main(String[] args) {} } |