Java 从抽象类中的Jframe类获取变量

Java 从抽象类中的Jframe类获取变量,java,Java,我的问题是,我想在java中从jframe类到抽象类获取变量 例如: public class MainWindow extends Frame { String Variable 1; ..... } public abstract class AbstractController { // I need to use variable 1 in this class... } 谢谢大家 我的问题是我想在java中从jframe类到抽象类获取变量 我将建议,

我的问题是,我想在java中从jframe类到抽象类获取变量

例如:

public class MainWindow extends Frame {
    String Variable 1;
    ..... 
}

public abstract class AbstractController { 

    // I need to use variable 1 in this class...

}
谢谢大家

我的问题是我想在java中从jframe类到抽象类获取变量

我将建议,不,你真的不想这样做,你不想直接从一个类中访问和修改另一个类中的变量。您似乎正在创建类似于模型视图控制器或视图控制器的内容,因此您可能希望根据需要传递引用,封装所有变量,并通过受控的公共方法访问变量或“状态”。比如说:

public class View {
    private String someStateField;
    //..... 

    public String getSomeStateField() {
        return someStateField;
    }

    public void setSomeStateField(String someStateField) {
        this.someStateField = someStateField;
    }
}
和控制器

public abstract class AbstractController { 
    private View view;

    public AbstractController(View view) {
        this.view = view;
    }

    public view getView() {
        return view;
    }

    public void someMethod() {
        // can now call view methods here
    }

}
当然,控制器的具体版本需要具有类似结构的构造函数,并调用super的构造函数:

public class ConcreteController { 

    public ConcreteController(View view) {
        super(view);
    }

    // ....

}    
而主要的方法是将所有这些联系在一起:

public static void main(String[] args) {
    SwingUtilities.invokeLater(() -> {
        View view = new View();
        AbstractController controller = new ConcreteController(view);
        // .....
    });
}

当然,您的解决方案的细节将取决于程序的其他结构和设置,如果您需要更详细的答案,请使用更详细的信息和代码更新您的问题,并回复我

在AbstractController
MainWindow测试中=新建MainWindow();test.getVariable1()。考虑命名约定。变量名应始终以小写开头,不能是数字。很可能,您会将视图传递到控制器中,可能是在构造函数参数中,然后控制器会调用视图上的公共方法(如果需要提取其状态)。