因为public void actionPerformed(ActionEvent event){在这里被实装了。
如果没有这段就是不可以的。
在这里可以理解为如下的步骤
1,一个匿名类实装了这个Interface ActionListener
2,New了这个匿名类 new ActionListener()
3,把这个匿名类命名为AL,而AL是ActionListener的子类,当然可以用他的父类或是Interface来统称(ActionListener al)
接口虽然不能被直接实例化,但他可以从其它实现了它的类上传递过来,看上去是被直接实例化了。你这里的new ActionListener(){……}就相当于把ActionListener接口实现了
这里和通过接口实例化实现类是一样的
interface A{
dosomething();
}
public class B implements A{
dosomething(){ System.out.println("............."); }
public static void main(String[] args){
A a = new B();
a.dosomething();
}
}
/////////////
public static void main(String[] args){
A a = new A(){
//这里需要实例化
dosomething(){
System.out.println(".............");
}
}
}
你可以看看匿名内部类
不知道