我有这行代码。

class ButtonPanel extends JPanel implements ActionListener
{
    public ButtonPanel()
    {
        yellowButton = new JButton("Yellow");

并且它起作用了,我认为Java需要在创建这样的jButton实例之前知道yellowButton的类型?
JButton yellowButton = new JButton("Yellow");

有人可以解释这是如何工作的吗?

最佳答案

如果确实有效,则意味着yellowButton可能是您没有注意到的类字段。

再次检查课程。您可能拥有的更像这样:

class ButtonPanel extends JPanel implements ActionListener
{
    private JButton yellowButton;

    public ButtonPanel()
    {
        yellowButton = new JButton("Yellow");
        /* this.yellowButton == yellowButton */

        /* etc */
    }
}

如果在方法范围内找不到变量foo,它将自动回退到this.foo。相反,某些语言(如PHP)没有这种灵活性。 (对于PHP,您始终必须执行$this->foo而不是$foo来访问类字段。)

10-05 18:22