我有一个我想在2级中使用的变量。我必须将其声明为静态变量吗?它可以是实例变量吗?
public class Text extends JFrame implements ActionListener{
JTextArea t;
String s;
}
我想在另一个类中使用 s 。我必须将其声明为静态变量吗?是否可以将其声明为实例变量?
答案 0 :(得分:8)
根据如何使用变量,您无法确定变量是否为静态变量。如果它对所有Text
实例都是通用的,那么它必须是静态的。如果每个Text实例都有自己的s
(无论这个选择不当的名称可能实际上代表什么),那么它必须是一个实例变量。
答案 1 :(得分:3)
I want to use s in another class
如果s在整个应用程序中都有一个相同的值,那么继续使用static。
相反,如果它实际上是一个实例变量,您可以在其他类中引用Text,并在Text.java中使用s的getter方法来访问它
答案 2 :(得分:3)
您可以将其声明为实例变量,并为s
创建一个公共getter方法。
public String getValue() {
return s;
}
请查看JB Nizet关于是否应将其声明为静态变量或实例变量的答案。
答案 3 :(得分:3)
public class Text extends JFrame implements ActionListener{
public static JTextArea t;
String s;
};
以上内容可以像这样:Text.t
在类本身之外。如果它适用于您的情况或使用实例开始,您可能需要考虑继承,即:
public class Text extends JFrame implements ActionListener{
private JTextArea t;
private String s;
public JTextArea getTextArea() {
return this.t;
}
};
然后使用getter和setter来访问它们的值,这是Java的做事方式。 要使用上述内容,您现在需要在另一个类中创建一个实例:
public class otherClass {
private Text theInstance = new Text();
JTextArea theTextArea = theInstance.getTextArea();
};
此外,停止命名变量s和t。这是一种糟糕的编码方式。使用显式名称,以便很容易判断变量的用途/用途。想象一下,您想要在几天后查看代码,您可能不记得s
和{ {1}}意图在您的代码中执行。
答案 4 :(得分:0)
为s制作公共getter方法,并从其他类中使用它。