Java方法运行的顺序是什么?

时间:2012-05-12 22:46:46

标签: java class

我意味着功能,抱歉!

使用以下代码,它有一些类可以执行单独的作业。 问题是,因为他们从不打电话给对方,他们在哪个命令中运行?

它们是否同时运行?

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class Moving extends JPanel implements ActionListener {
    int x, y;
    Timer timer;

    Moving() {
        x = 0;
        y = 0;
        timer = new Timer(10, this);
    }

    public void actionPerformed(ActionEvent e) {
        x += 1;
        y += 1;
        repaint();
    }

    public void paintComponent(Graphics g) {
        super.paintComponent(g);
        if (x > 1080 && y > 880) {
            x = 0;
            y = 0;
        } else {
            g.fillOval(x, y, 40, 40);
        }
    }

    public static void main(String[] args) {
        JFrame f = new JFrame("Moving");
        f.setBackground(Color.GREEN);
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        Moving m = new Moving();
        f.add(m);
        f.setSize(1100, 900);
        f.setVisible(true);
        m.timer.start();
    }
}

2 个答案:

答案 0 :(得分:1)

我假设你的意思是方法,而不是课程。此外,操作顺序取决于您调用它们的顺序,main方法。在您的示例中,您只调用Moving构造函数,因此这是您的类中唯一将执行的“方法”。其他的已定义,但不会运行,因为它们未被调用(至少不在您提供的代码中)。

更新(感谢dacwe和cHao): 对不起,我不熟悉JPanel,也不知道在这个类之外调用的方法。在这种情况下,repaint()方法将间接调用paintComponent(),同时,定时器将启动对actionPerformed的调用。 This post能够更详细地解释它。

另外,作为注释 - Java通常称其为“动词”方法。部分是大多数面向对象语言的约定,部分原因是函数与类绑定,因此它值得区分。 Javascript是一种函数式语言,将其动词称为“函数”。

答案 1 :(得分:0)

您的程序按以下顺序执行:

  1. main入口点
  2. Moving contructor
  3. Timer构造函数
  4. {li} Timer.start()类的{li> Timer方法 每隔10毫秒就会调用
  5. Moving.actionPerformed(ActionEvent e)