内部类学习(四)--匿名内部类

王朝other·作者佚名  2007-05-29
窄屏简体版  字體: |||超大  

这里再介绍一种特殊的内部类――匿名内部类(Anonymous Inner Class),顾名思义,就是没有名字的内部类,这是Java为了方便我们编写程序而设计的一个机制。因为有时候有的内部类只需要创建一个它的对象就可以了,以后再不会用到这个类,这时候使用匿名内部类就比较合适,而且也免去了给它取名字的烦恼,:)。

匿名类的语法是什么样的呢?如下所示:

new SuperType(){

内部类的方法和域;

}

注意,这里的SuperType指超类,它可以是一个接口(interface)或者是一个类(Class),当它是一个接口的时候就不能有构造参数(Construction parameters)了。匿名类的语法相对于Java的其他部分来说稍微复杂一点,我们可以按如下方式理解:

1.SuperType为接口

例子:Interface1() test=new Interface1(){

要实现的的方法;

Interface1的域;

内部类的域以及方法;

}

我们可以如下理解:

先声明了如下一个类,

class Anonymous1 implements Interface1{

要实现的的方法;

Interface1的域;

内部类的域以及方法;

}

然后,Interface1() test=new Anonymouse1();

这样就比较容易理解了。

2.SuperType为类

例子:Class2 test=new Class2(Construction parameters){

内部类的域以及方法;

}

我们可以如下理解:

先声明了如下一个类,

class Anonymous2 extends Class2{

public Anonymous2(Construction parameters){

super(Construction parameters);

}

内部类的域以及方法;

}

然后,Class2 test=new Anonymouse2(Construction parameters);

本节测试代码如下:

package cn.edu.hust.cm.test;

import java.awt.event.ActionListener;

import java.awt.event.ActionEvent;

import java.awt.Toolkit;

import javax.swing.JOptionPane;

import javax.swing.Timer;

public class InnerClassTest {

public InnerClassTest() {

super();

}

public static void main(String[] args) {

Court court=new Court(10000,true);

court.start();

JOptionPane.showMessageDialog(null,"停止么,CMTobby?");

System.exit(0);

}

}

class Court{

public Court(int interval,boolean beep){

this.interval=interval;

this.beep=beep;

}

public void start(){

ActionListener action=new ActionListener(){

public void actionPerformed(ActionEvent e){

System.out.println("Cindyelf,wouly you be my girl?");

}

};

Timer t=new Timer(interval,action);

t.start();

}

private int interval;

private boolean beep;

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航