在Swing开发时,大家应该经常用到下面的代码:
JButton btnTest = new JButton();
btnTest.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
// do something here
}};
通过匿名内部类的使用,我们可以方便地建立一个只能在此按钮中起作用的一个ActionListener接口的实现,这个实现只在该位置可用。
那么,能不能将这里的接口改为一个抽象类,甚至一个普通的类呢?看一下下面代码:
public class Test {
public static void main(String[] args)
{
Demo d = new Demo()
{
protected void showMessage()
{
System.out.println("Printed by inner class");
}
};
d.showMessage();
}
} class Demo
{
protected void showMessage()
{
System.out.println("Printed by demo");
}
}
代码运行结果为:
Printed by inner class
同样,如果我们只需要一次性地重写某类的一个方法,同样也可以使用这种方式,在定义一个对象时对这个类进行匿名地继承,产生一个需要的特殊的类。
|