我遇到的一个非常常见的问题是,我有一些字段,我想通过从字段类初始化的派生类来引用它们。
让我更具体一点。
我有三个派生自主类的类。
每个类都有一个与字段交互的方法。在这种情况下,a有一个调用类(JPanel)的JFrame并将其添加到内容窗格中。
我找到的方法是将Frame类创建的对象的引用传递给Panel类的构造函数。并通过它来引用它们。
有更有效的方法吗?如何为所有派生类创建全局字段或方法?在这种情况下,它们是主类的组件?
更新
像这样。
import javax.swing.JFrame;
import javax.swing.JPanel;
public class JFrame1 extends JFrame {
protected String field1;
protected String field2;
public JFrame1() {
add(new Panel1());
}
}
class Panel1 extends JPanel {
public Panel1() {
// field1 = "String"; Wrong
}
}
我知道我可以在class Panel1
内嵌套public class Frame1
,问题就会解决,但如果我希望这两个类在不同的文件中会怎样?
答案 0 :(得分:2)
源自主类的三个类 - 这是什么意思?你的三个类派生自(扩展)一个JPanel,它没有任何字段。
如果你问三个类应该如何访问Frame1
中可能是其容器的字段 - 那么你应该使用getParent()
来引用父类,检查它是否是{ {1}}如果是,请访问其字段。
答案 1 :(得分:0)
好的,我找到了一条路。
Frame类
import javax.swing.JFrame;
public class JFrame1 extends JFrame {
private String field1;
public JFrame1() {
add(new PanelA());
}
class PanelA extends Panel1 {
@Override
public String getField1() {
return field1
}
}
创建界面
public interface Connector {
public String getField1();
}
Panel1类
import javax.swing.JPanel;
public abstract class Panel1 extends JPanel implements Connector {
field1 = getField1();
}