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

java 实现接口的疑惑!求高手解释···
[code=Java][/code]
package com.frameactiontest;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class FrameActionTest implements ActionListener {
/**
 * @param args
 */
Frame f = new Frame();
public static void main(String[] args) {
// TODO Auto-generated method stub
FrameActionTest fat = new FrameActionTest();
fat.init(); //调用init()方法.
}
public void init(){
Button bn =new Button("Confirm"); //new Button按钮对对象.
f.add(bn);
f.setSize(800, 600);
f.setVisible(true);
bn.addActionListener(this); //曾加监听器.
}
public void actionPerformed(ActionEvent e) { //重写 ActionListener的方法.
// TODO Auto-generated method stub
f.setVisible(false);
f.dispose();
}
}
我想问的是:
类“FrameActionTest” implements(实现了) 类“ActionListener” ,这里从main函数的执行代码顺序看,
重写 类“ActionListener”的“actionPerformed(ActionEvent e)”方法,
然后我疑问的是java怎么知道 先执行main函数的“init()”方法之后才执行重写的“actionPerformed(ActionEvent e)”方法,(因为我认为“actionPerformed(ActionEvent e)”方法是在main 函数中“new FrameActionTest()”的时候就执行了)

------解决方案--------------------
探讨
怎么没人回答?是不是问题太简单了···

------解决方案--------------------
探讨
引用:
怎么没人回答?是不是问题太简单了···


其实也没啥,主要就是这句话的认识是错误的而已:
“因为我认为“actionPerformed(ActionEvent e)”方法是在main 函数中“new FrameActionTest()”的时候就执行了”
实际上,actionPerformed() 函数是在有事件发生时,才会被调用的。

init() 则……

------解决方案--------------------
一楼正解,actionPerformed() 函数是在事件发生时被调用,而

init() 是初始化方法,刚创建好FrameActionTest对象时,就会被调用,所以才会是那个执行顺序,可以测试一下,打印店东西出来看看就知道顺序了