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

抽象类 匿名类
import java.awt.*;
import java.awt.event.*;

public class ChatClient extends Frame {

TextField tfTxt = new TextField();
TextArea taContent = new TextArea();

public static void main(String[] args) {
new ChatClient().launchFrame();

}

public void launchFrame() {
setLocation(400, 300);
this.setSize(300, 300);
add(tfTxt, BorderLayout.SOUTH);
add(taContent, BorderLayout.NORTH);
pack();
this.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});

setVisible(true);
}

}
这里的windowadapter是一个抽象类,但是前面用了一个new方法,这是实例化的过程么?但是,不是说抽象类不可以实例化么? 如果说这个不是实例化 new windowadapter又是什么意思?这里的匿名类是配合new windowadapter使用么?还是仅是为了精简代码?


------解决方案--------------------
这里实例化的是windowadapter的一个匿名内部类,而不是windowadapter本身,这是一种简洁的写法而已。
------解决方案--------------------
那就要定义一个类继承windowadapter,当然,可以定义成内部类。

另外,不管是不是抽象类,或是接口,都可以想这样来创建匿名内部类。