[英]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。 這是一種糟糕的編碼方式。 使用顯式名稱,以便很容易分辨出變量的含義/用途。 假設您想從現在開始查看代碼,可能不記得s
和t
在代碼中的含義。
為設置公共getter方法,並在其他類中使用它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.