-1

我有一个变量,我也想在 2 类中使用。我必须将其声明为静态变量吗?它可以是实例变量吗?

public class Text extends JFrame implements ActionListener{

JTextArea t;
String s;
}

我想在另一个类中使用s 。我必须将其声明为静态变量吗?是否可以将其声明为实例变量?

4

5 回答 5

8

您不会根据变量的使用方式来决定变量是否为静态。如果它对所有Text实例都是通用的,那么它必须是静态的。如果每个 Text 实例都有自己的s(无论这个选择不当的名称实际上可能代表什么),那么它必须是一个实例变量。

于 2012-12-14T08:08:51.710 回答
3

I want to use s in another class

如果 s 在整个应用程序中都具有相同的值,则继续使用 static。

相反,如果它真的是一个实例变量,您可能在其他类中有对 Text 的引用,并且在 Text.java 中有一个用于 s 的 getter 方法来访问它

于 2012-12-14T08:07:46.060 回答
3

您可以将其声明为实例变量并为s.

public String getValue() {
    return s;
}

另请查看 JB Nizet 关于是否应将其声明为静态变量或实例变量的答案。

于 2012-12-14T08:07:48.327 回答
3
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。这是一种糟糕的编码方式。使用显式名称,以便轻松判断变量的用途/用途。想象一下,几天后您想查看您的代码,您可能不记得代码中的内容st意图。

于 2012-12-14T08:08:50.450 回答
0

为 s 创建公共 getter 方法并在其他类中使用它。

于 2012-12-14T08:08:12.320 回答