日期:2014-05-20  浏览次数:20757 次

抽象类不能实例化的问题求助
抽象类不能实例化,也就是不能直接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后加一个{}就可以了?
------最佳解决方案--------------------

new WindowAdapter(){
  //....
}

这是返回的一个带有WindowAdapter接口的的匿名类,addWindowListener接受一个带有WindowAdapter接口的类就可以了 这个类具体叫什么名字则无所谓
------其他解决方案--------------------
那是匿名类,虽然new的是这个抽象类,不过,实际构造出来的对象,应该是已经实现了抽象类中抽象方法的匿名子类.so...
------其他解决方案--------------------
那是 匿名类
------其他解决方案--------------------
匿名子类的实例
------其他解决方案--------------------
匿名类....接口也可以...