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

时间:2014-08-25 21:35:21

标签: java swing user-interface main

我一整天都在工作,所以这可能不是一件容易的事,但我疲惫的大脑却看不到它。如果是这样的话,抱歉这个愚蠢的问题。现在,我的问题。

我希望我的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();

3 个答案:

答案 0 :(得分:3)

你会尝试类似的东西:

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

答案 1 :(得分:0)

你无法控制那个类的超级作用,所以你要么把它作为参数传递给构造函数并将其保存在变量上,要么使static验证静态,这样每个人都可以访问它(这不是可以推荐的,你只会这样做能够有一个实例)。

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就可以引用验证并可以访问任何公共方法和变量。

答案 2 :(得分:0)

如果你的意思是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;

}