我一整天都在工作,所以这可能是显而易见的,但我疲惫的大脑没有看到它。如果是这样的话,很抱歉我提了一个愚蠢的问题。现在,我的问题来了。
我想让我的Gui
类访问Validator
类。在创建所有类的main
类中,创建了Gui
和Validate
类。
:
public class Main{
public static void main(String[] args){
Gui gui = new Gui();
Validate validate = new Validate();
}
}
现在,我希望我的Gui类能够访问Validate类并能够访问它的方法。
这是我的Gui类构造函数:
public class Gui extends JFrame implements ActionListener{
//A list of variables here...
public Gui(){
super("BANK");
//rest of the constructor.
现在,我如何让我的Gui
类访问validate
,而使用super();
?
您可以尝试这样做:
public class Gui extends JFrame implements ActionListener{
private Validate validate;
public Gui(Validate validate){
super();
this.validate = validate;
//rest of the constructor.
}
...
}
public class Main{
public static void main(String[] args) {
Validate validate = new Validate();
Gui gui = new Gui(validate);
}
}
在这个类中你不能控制super做什么,所以你要么把它作为参数传递给构造函数,然后把它保存在一个变量上,要么把validate设置为静态,这样每个人都可以访问它(这是不推荐的,你只能有一个实例)。
public class Main{
public static void main(String[] args){
Validate validate = new Validate();
Gui gui = new Gui(validate);
}
}
public class Gui extends JFrame implements ActionListener{
//A list of variables here...
private Validate validate;
public Gui(Validate val){
super("BANK");
validate = val;
//rest of the constructor.
}
这样Gui就有一个引用来验证,并且可以访问任何公共方法和变量。
如果您在这行中指的是super()
super("BANK");
,那么您不能,这个super("BANK")
引用JFrame
的构造函数,因为您的Gui类正在扩展JFrame。只接受String title
和/或GraphicConfiguration gc
的参数。
你需要修改你的构造函数:
private Validate validate;
public Gui(Validate validate){
super("BANK"); // this super refers to JFrame constructor
this.validate = validate;
}