-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
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 に答える
3

I want to use s in another class

s がアプリケーション全体で同じ値を持つ場合は、静的に進みます。

代わりに、それが実際にインスタンス変数である場合は、他のクラスのテキストへの参照があり、それにアクセスするための Text.java の s の getter メソッドがある場合があります。

于 2012-12-14T08:07:46.060 に答える
3

これをインスタンス変数として宣言し、 の public getter メソッドを作成できますs

public String getValue() {
    return s;
}

静的変数またはインスタンス変数として宣言する必要があるかどうかについては、JB Nizet の回答もご覧ください。

于 2012-12-14T08:07:48.327 に答える
0

s のパブリック getter メソッドを作成し、他のクラスから使用します。

于 2012-12-14T08:08:12.320 に答える