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 |