要改的部分如下(已经改过了): public class TestButton{ private Frame f; private Button b; public TestButton(){ f=new Frame("Test"); b=new Button("Press me"); }
因为你原来的写法,是在构造函数中定义并创建的f,b。 不会连变量定义与赋值都忘了吧?你定义的private Frame f and Button b,并未在构造函数里用到,也就是没有为它们创建对象。 在构造函数中,你又定义了一个新的f,并且初始化了。 而你创建的f,b只适用于TestButton()本身,是局部的,并且覆盖全局的f与b。
public class TestButton{
private Frame f;
private Button b;
public TestButton(){
f=new Frame("Test");
b=new Button("Press me");
}
不会连变量定义与赋值都忘了吧?你定义的private Frame f and Button b,并未在构造函数里用到,也就是没有为它们创建对象。
在构造函数中,你又定义了一个新的f,并且初始化了。
而你创建的f,b只适用于TestButton()本身,是局部的,并且覆盖全局的f与b。