簡體   English   中英

實例變量還是靜態變量?

[英]instance variable or static variable?

我有一個變量,我也想在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中具有getter方法供s訪問它。

您可以將其聲明為實例變量,並為s創建一個公共的getter方法。

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。 這是一種糟糕的編碼方式。 使用顯式名稱,以便很容易分辨出變量的含義/用途。 假設您想從現在開始查看代碼,可能不記得st在代碼中的含義。

為設置公共getter方法,並在其他類中使用它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM