抽象类不能实例化,也就是不能直接new来调用构造器。
我们知道不能new WindowAdapter(),但是为什么new WindowAdapter(){ }这样就可以呢??例如:
addWindowListener(new WindowAdapter(){
public void windowActivated(WindowEvent e){
text.append("\n我被激活");
}
public void windowClosing(WindowEvent e){
System.exit(0);
}
请解释为什么编译器中new WindowAdapter后加一个{}就可以了?

解决方案 »

  1.   

    那是匿名类,虽然new的是这个抽象类,不过,实际构造出来的对象,应该是已经实现了抽象类中抽象方法的匿名子类.so...
      

  2.   


    new WindowAdapter(){
      //....
    }这是返回的一个带有WindowAdapter接口的的匿名类,addWindowListener接受一个带有WindowAdapter接口的类就可以了 这个类具体叫什么名字则无所谓