黑马程序员技术交流社区
标题:
求高人帮助:在创建创建窗口监听器时候为什么不能直接用WindowListner啊?
[打印本页]
作者:
潜伏
时间:
2013-12-3 08:33
标题:
求高人帮助:在创建创建窗口监听器时候为什么不能直接用WindowListner啊?
WindowListener既不是抽象类。里面的方法也不是抽象的,为什么不能直接在addListener(new WindowListener)n呢??郁闷之极?毕老师再讲课的时候说他的方法是抽象的,很明显有问题啊
作者:
汪洋大海
时间:
2013-12-3 09:19
同学你好。
接口 WindowListener
在包awt.event 中。
作者:
天ya~_琼楼
时间:
2013-12-3 09:49
WindowListener属于接口。
接口的初期理解,可以认为是一个特殊的抽象类。当抽象类中的方法都是抽象的,那么该类可以通过接口形式表示。
反过来说就是:接口是抽象类,而且内部的方法全部是抽象的。
API对WindowsListener的解释是:用于接收窗口事件的侦听器接口。旨在处理窗口事件的类要么实现此接口(及其包含的所有方法),要么扩展抽象类 WindowAdapter(仅重写所需的方法)。
咱们使用WindowsListener时必须实现此接口,包括其内部的7个方法全部都要实现,而WindowAdapter已经实现了所有的方法,其存在的目的是方便创建侦听器对象。扩展此类可创建 WindowEvent 侦听器并为所需事件重写该方法。(如果要实现 WindowListener 接口,则必须定义该接口内的所有方法。此抽象类将所有方法都定义为 null,所以只需针对关心的事件定义方法。)也就是说调用WindowAdapter内部的方法时,可以定义方法。这样就比较方便。比如:
private void myEvent()
{
f.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
}
复制代码
作者:
想你的夜
时间:
2013-12-4 23:46
这个郁闷的原因是你还没有真正理解接口的概念吧, WindowListener就是java.awt.event中
接口,下面再把接口的概念给你叙述一遍:
Java中的接口是一些方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的功能,但是用到接口的类必须继承接口,并且去具体的实现其中的方法。例子:
//定义一个接口Demo, 这个接口只定义两个方法,
interface Demo {
void close();
void opean();
}
//Mydemo继承接口并实现具体的两个方法
public class Mydemo implements Demo {
public void close() {
System.out.println("关闭");
}
public void opean() {
System.out.println("打开");
}
}
如果你理解了接口,就是你看错了把
WindowListener当作不是接口,但是实际上WindowListener是java.awt.event中接口的,不知道我说的你理解没有
作者:
HAnG
时间:
2013-12-5 00:16
什么叫接口,就是里面的方法全是抽象,不能实例化。
类WindowAdapter就是把接口WindowListener里的方法全重写成空函数了,所以可以实例化。
这样你只需要用到监听器里1~2个方法时就用Adapter,而不使用需要重写7个方法的Listener。
我发现我言简意赅的回答总拿不到技术分{:soso_e167:}。
作者:
简★零度
时间:
2013-12-5 22:59
下次问题解决了就把类型改成提问结束!谢谢!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2