2 回答

TA貢獻1712條經驗 獲得超3個贊
非靜態字段與實例相關聯。每個實例都有這些字段的一個副本。
public class CurrencyConverter {
int rupee = 63; // non static instance field
int dirham = 3; // non static instance field
// etc.
為什么我需要實例化我的 CurrencyConverter 類才能調用 printCurrencies()?
沒有實例,您的副本為零,因此沒有可打印的內容。
無論如何,您通常不能只調用方法嗎?
如果您將方法設為靜態并刪除對實例字段的所有引用,那么是的,您可以。這運行得很好,但它不再做任何有用的事情。
public static void main(String[] args) {
printCurrencies();
}
static void printCurrencies() {
}
我在同一個班級?
不知道你的意思,但只有一個班級,一切都在里面。
int rupee = 63;
int Rupee = 63;
除非你喜歡混亂,否則不要這樣做。您應該在名稱中明確每個字段的不同用途。
我嘗試將 printCurrencies() 的訪問修飾符更改為靜態,但是我的局部變量不是靜態的。為什么我需要實例化?
非靜態字段的副本在您明確創建它們之前不存在。

TA貢獻1796條經驗 獲得超4個贊
將類視為對象的模式或配方。實例化時,您將使用此特定模式創建一個對象?,F在有一個帶有您可以訪問的值的對象。模式(因此類)只有可以保存特定值的字段的描述。因此,您無法訪問任何值。
現在是靜態:靜態字段是在運行時開始時創建的字段。因此,您可以隨時訪問該值而無需創建對象,因為它們不屬于某個對象,而是屬于特定的類。
您擺脫實例化的解決方案是使該類的所有成員都是靜態的。
添加回答
舉報