如何将一个类对象传递给另一个使用super()的类



我一整天都在工作,所以这可能是显而易见的,但我疲惫的大脑没有看到它。如果是这样的话,很抱歉我提了一个愚蠢的问题。现在,我的问题来了。

我想让我的Gui类访问Validator类。在创建所有类的main类中,创建了GuiValidate类。

:

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;
}

相关内容

  • 没有找到相关文章

最新更新