Topic: 接口问题 。。。

  Print this page

1.接口问题 。。。 Copy to clipboard
Posted by: develop8
Posted on: 2006-05-24 08:00

为什么执行 ActionListener 的类在 事件发生后,会自动调用 actionPerformed( ) 方法?

main方法里没有调用actionPerformed()方法,但是,什么原因,每当事件发生时会,自动调用他?

还有一切实现comparable 接口的类,即使在main方法里没有调用compareTo() 方法

他也会自动排序, 是什么让这一切发生?

接口是个空的没有实现的类,为什么他能控制程序 ?

2.Re:接口问题 。。。 [Re: develop8] Copy to clipboard
Posted by: damondeng
Posted on: 2006-05-24 10:35

接口只是一个声明, 它不能控制程序, 但它能为程序的控制提供一个标准.

听起来有点复杂, 我自己在这么理解的:
比如, 你如果你声明你实现了"好公民"这个接口, 你就必须实现"好公民"规定的所有方法, 比如"被人问路"这个方法, 如果别人问路你都不理, 说明你没有实现"被人问路"的方法, 系统是不充许的, 即然你都声明是一个"好公民"了, 你必须实现"被人问路"的方法.
也正因为系统会做这样的检查, 当别人发现你声明是一个"好公民"时, 他可以放心地向你问路, 因为他知道你实现了"被人问路"的方法.
但是具体怎么回答别人"好公民"接口是不会规定的, 得你自己实现, 你要是张嘴乱说一气系统也没办法, 说不定问路人也相信了.
所以说, 接口只是规定了一种标准.

说到actionPerformed(),它的调用是由JVM触发的, JVM检测到某个鼠标动作(或者是键盘动作), JVM会确定有那些类在listen当前这个组件, 然后调用它们的actionPerformed()方法, 正因为它们都实现了ActionListener接口(没查API, 具体接口名不确定是不是这个), JVM可以放心地调用它们的actionPerformed()方法.

comparable接口也一样, 你要是声明你实现了comparable接口, 你必须实现compareTo方法, 具体实现是由你完成的(当然, 有些系统提供的类已经实现了这一方法, 可以不用再实现).
实现了compareTo方法后, 它们也不会"自动"排序, 还是得由外界程序直接或者是简接调用compareTo方法才行。

不知道有没有回答你的问题

3.Re:接口问题 。。。 [Re: develop8] Copy to clipboard
Posted by: dengyin2000
Posted on: 2006-05-24 15:28

你可以看看JButton或其他的介绍actionListener的Component的Source.

他们代码里面是有调用ActionListener 的 actionPerformed()方法的.


   Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent
Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1
客服电话 18559299278    客服信箱 714923@qq.com    客服QQ 714923