■长沙学院计算机工程与应用数学学院 刘 欣
Java 中的内部类在程序中起着“心脏”的作用,能用此实现特定的功能,具有非常好的封装性。使用内部类可以很方便地编写事件驱动程序。本文将结合简单实例内部类理解及用法进行详细描述。
内部类指的是Java 类体内定义的类,也称为嵌套类。通常类体内有属性与方法两大部分,有了内部类,类体内可包括属性、方法及类三个部分。内部类可分为成员内部类、静态内部类与方法内部类,以及一种特殊的匿名内部类。下面分别阐述。
成员内部类指的是与外部类的属性、方法并列定义且作为外部类的一个成员存在的类。比如:
class outter{
void f( ){ //inner bb=new inner(); bb.g();System.out.print(“我是外部类的方法”);}
class inner{ void g( ){
System.out.print(“我是内部类的方法”);}}
public static void main(String args[]){outter.inner aa=new outter( ).new inner( );aa.g( );}}
例中inner 是成员内部类。若想通过外部类去访问内部类,则需通过外部类对象创建内部类对象,语法如下:
外部类名:内部类名变量名=new 外部类名( )·new 内部类名( );然后用对象访问内类部里的方法。代码如下:
另外,可在内部类里访问外部类成员方法。
静态内部类是内部类的前面加上了修饰词static,举例如下:
其中inner 就是静态内部。如果想通过外部类去访问内部类,只需要直接创建外部类的对象去访问内部方法,创建对象的具体语法格式如下:
外部类名.内部类名 对象名=new 外部类名.内部类名();
然后用外部类对象去访问内部类里的方法。对应上例中的代码为:
outter.inner aa=new outter.inner();
匿名内部类顾名思义,就是没有名字的内部类,而且是方法内部类。在GUI 编程中用得较多,用于实现每个组件注册了监听事件后,来完成事件的响应动作。格式为:
方法名(new 接口名( ){});
举例如下:
方法内部类又叫局部内部类,该类位于方法体内,使用范围比方法小,比较少用。特别要注意的是方法体内不能定义静态方法内部类。
除了可方便定义外,内部类还具有如下特点:
1.不为同一包的其他类所见,具有很好的封装性。
2.使用内部类可用于编写事件驱动程序。
3.匿名内部类可以方便的定义运行时回调。