靜態上下文中的非靜態欄位引用
在Java中,靜態方法無法直接存取非靜態欄位。此錯誤通常在嘗試從靜態方法存取實例變數時發生。
理解問題
在給定的程式碼中,錯誤發生在main 方法中:
<code class="java">Account account = new Account(1122, 20000, 4.5); account.withdraw(balance, 2500);</code>
這裡,withdraw() 方法是靜態的,但它嘗試存取非靜態字段餘額。由於 main 方法是靜態的,因此它無法引用諸如balance之類的實例變數。
解決方案
要解決此錯誤,請將方法設為非靜態或將欄位設為非靜態
選項1 :使Withdraw 方法成為非靜態
將withdraw() 方法更改為:
<code class="java">public void withdraw(double withdrawAmount) { balance -= withdrawAmount; }</code>
現在,方法可以存取餘額字段,因為它是非靜態的。
選項2:使餘額欄位靜態
或者,使餘額欄位靜態:
<code class="java">private static double balance = 0;</code>
現在,可以從靜態上下文(如main方法)存取餘額欄位:
<code class="java">Account account = new Account(1122, 20000, 4.5); account.withdraw(balance, 2500);</code>
以上是為什麼我無法從 Java 中的靜態方法存取非靜態欄位?的詳細內容。更多資訊請關注PHP中文網其他相關文章!