站内搜索: 请输入搜索关键词

当前页面: 开发资料首页Java 专题JAVA技术专题综述之内部类篇

JAVA技术专题综述之内部类篇

摘要: 有些类的定义中包含另一个类的定义。这种处于内部的类称为内部类(inner class)......
<iframe align=right frameBorder=0 height=300 marginHeight=0 marginWidth=0 scrolling=no src="http://www.chinabyte.com/tag/cont_flash_software.html" width=360></iframe>  有些类的定义中包含另一个类的定义。这种处于内部的类称为内部类(inner class)。

  例如:

<table bgColor=#ffffff border=0 cellPadding=0 cellSpacing=0 width=600> <tr> <td>public class OuterClass
{
public class InnerClass
{
//---This is a inner class.
}
} </td></tr></table>
  InnerClass类嵌套在OuterClass中,并且被声明为public,因此被OuterClass类之外的对象访问。

  InnerClass类没有被声明为OuterClass类的一个静态成员,因此除非生成了一个OuterClass对象,否则无法生成任何InnerClass对象。但是,当你声明一个包含嵌套类的类对象时,并不一定会生成嵌套类的对象,这主要由包含嵌套类的类的构造方法决定。

  示例1:

<table bgColor=#ffffff border=0 cellPadding=0 cellSpacing=0 width=600> <tr> <td>class OuterClass
{
class InnerClass
{}
}
public class Test
{
public static void main(String[] args)
{
OuterClass out = new OuterClass();
OuterClass.InnerClass in = out.new InnerClass();
}
} </td></tr></table>
  我们使用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:

<table bgColor=#ffffff border=0 cellPadding=0 cellSpacing=0 width=600> <tr> <td>public class Test
{
class InnerClass
{}
1
public static void main(String[] args)
{
InnerClass in = new Test().new InnerClass();
}
} </td></tr></table>
  在main()方法中实例化本类的内部类可以用上例的形式。

  示例3:

<table bgColor=#ffffff border=0 cellPadding=0 cellSpacing=0 width=600> <tr> <td>public class Test
{
class InnerClass
{}
InnerClass in = new InnerClass();
public static void main(String[] args)
{}
} </td></tr></table>
  在main()方法外,实例化本类的内部类就和我们平常的操作一样了。

  示例4:

<table bgColor=#ffffff border=0 cellPadding=0 cellSpacing=0 width=600> <tr> <td>public class Test
{
class InnerClass
{}
public void method()
{
InnerClass in = new InnerClass();
}
public static void main(String[] args)
{}
} </td></tr></table>



↑返回目录
前一篇: JAVA专题技术综述之线程篇
后一篇: 利用JAVA向垃圾电子邮件宣战