top
Loading...
JAVA技術專題綜述之內部類篇
有些類的定義中包含另一個類的定義。這種處于內部的類稱為內部類(inner class)。

例如:

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)
{}
}

作者:http://www.zhujiangroad.com
來源:http://www.zhujiangroad.com
北斗有巢氏 有巢氏北斗