刘欣
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内部类名( );然后用对象访问内类部里的方法。代码如下:
outter.inner aa=new outter().new inner();
aa.g( );
另外,可在内部类里访问外部类成员方法。
三、静态内部类
静态内部类是内部类的前面加上了修饰词static,举例如下:
public class outter {
void f( ) {
System.out.println("我是外部类的方法");
new inner( ).g( ); }
static class inner{ void g( ) {
System.out.println("我是內部类的方法");}}
public static void main(String[] args) {
outter.inner aa=new outter.inner( );
aa.g( ); }}
其中inner就是静态内部。如果想通过外部类去访问内部类,只需要直接创建外部类的对象去访问内部方法,创建对象的具体语法格式如下:
外部类名.内部类名 对象名=new 外部类名.内部类名();
然后用外部类对象去访问内部类里的方法。对应上例中的代码为:
outter.inner aa=new outter.inner();
四、匿名内部类
匿名内部类顾名思义,就是没有名字的内部类,而且是方法内部类。在GUI编程中用得较多,用于实现每个组件注册了监听事件后,来完成事件的响应动作。格式为:
方法名(new 接口名( ){});
举例如下:
interface shout{ void fg(); }
public class outter {
public static void main(String[] args) {
fh(new shout( ) { public void fg( ) {
System.out.println("匿名内部类实现"); }});}
public static void fh(shout ab) {ab.fg( ); }}
五、方法内部类
方法内部类又叫局部内部类,该类位于方法体内,使用范围比方法小,比较少用。特别要注意的是方法体内不能定义静态方法内部类。
六、结语
除了可方便定义外,内部类还具有如下特点:
1.不为同一包的其他类所见,具有很好的封装性。
2.使用内部类可用于编写事件驱动程序。
3.匿名内部类可以方便的定义运行时回调。
(责任编辑 李 芳)