我有这行代码。
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
来访问类字段。)