在另一個類中定義的類就是嵌套類(nested classes)。嵌套類的范圍由裝入它的類的范圍限制。這樣,假如類B被定義在類A之內(nèi),那么B為A所知,然而不被A的外面所知。嵌套類可以訪問嵌套它的類的成員,包括PRivate 成員。但是,包圍類不能訪問嵌套類的成員。
嵌套類一般有2種類型:前面加static標識符的和不加static 標識符的。一個static的嵌套類有static修飾符。因為它是static,所以只能通過對象來訪問它包圍類的成員。也就是說,它不能直接引用它包圍類的成員。因為有這個限制,所以static嵌套類很少使用。
嵌套類最重要的類型是內(nèi)部類(inner class)。內(nèi)部類是非static的嵌套類。它可以訪問它的外部類的所有變量和方法,它可以直接引用它們,就像外部類中的其他非static成員的功能一樣。這樣,一個內(nèi)部類完全在它的包圍類的范圍之內(nèi)。
下面的程序示例了如何定義和使用一個內(nèi)部類。名為Outer 的類有一個名為outer_x 的示例變量,一個名為test()的實例方法,并且定義了一個名為Inner 的內(nèi)部類。
// Demonstrate an inner class.
class Outer {
int outer_x = 100;
void test() {
Inner inner = new Inner();
inner.display();
}
// this is an inner class class Inner { void display() {System.out.println("display: outer_x = " + outer_x); }}}
class InnerClassDemo {
public static void main(String args[]) {
Outer outer = new Outer();
outer.test();
}
}
該程序的輸出如下所示:
display: outer_x = 100
在本程序中,內(nèi)部類Inner 定義在Outer 類的范圍之內(nèi)。因此,在Inner 類之內(nèi)的任何代碼可以直接訪問變量outer_x 。實例方法display() 定義在Inner 的內(nèi)部,該方法以標準的輸出流顯示 outer_x 。InnerClassDemo 的main( ) 方法創(chuàng)建類Outer 的一個實例并調(diào)用它的test( )方法。創(chuàng)建類Inner 和display() 方法的一個實例的方法被調(diào)用。
新聞熱點
疑難解答