我有一个变量,我也想在 2 类中使用。我必须将其声明为静态变量吗?它可以是实例变量吗?
public class Text extends JFrame implements ActionListener{
JTextArea t;
String s;
}
我想在另一个类中使用s 。我必须将其声明为静态变量吗?是否可以将其声明为实例变量?
我有一个变量,我也想在 2 类中使用。我必须将其声明为静态变量吗?它可以是实例变量吗?
public class Text extends JFrame implements ActionListener{
JTextArea t;
String s;
}
我想在另一个类中使用s 。我必须将其声明为静态变量吗?是否可以将其声明为实例变量?
您不会根据变量的使用方式来决定变量是否为静态。如果它对所有Text
实例都是通用的,那么它必须是静态的。如果每个 Text 实例都有自己的s
(无论这个选择不当的名称实际上可能代表什么),那么它必须是一个实例变量。
I want to use s in another class
如果 s 在整个应用程序中都具有相同的值,则继续使用 static。
相反,如果它真的是一个实例变量,您可能在其他类中有对 Text 的引用,并且在 Text.java 中有一个用于 s 的 getter 方法来访问它
您可以将其声明为实例变量并为s
.
public String getValue() {
return s;
}
另请查看 JB Nizet 关于是否应将其声明为静态变量或实例变量的答案。
public class Text extends JFrame implements ActionListener{
public static JTextArea t;
String s;
};
以上将使 t 像这样可用: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
和t
意图。
为 s 创建公共 getter 方法并在其他类中使用它。