Rumah >Java >javaTutorial >Mengapakah saya mendapat ralat Java \'Tidak Dapat Membuat Rujukan Statik ke Medan Bukan Statik\'?
Ralat Java: "Tidak Boleh Membuat Rujukan Statik ke Medan Bukan Statik"
Ralat ini timbul apabila cuba mengakses bukan- medan statik dalam kaedah statik. Di Java, kaedah statik tergolong dalam kelas dan hanya boleh mengakses pembolehubah statik, manakala kaedah bukan statik (kaedah contoh) tergolong dalam tika kelas dan boleh mengakses kedua-dua pembolehubah statik dan bukan statik.
Dalam kod anda, kaedah utama adalah statik, dan ia cuba memanggil kaedah pengeluaran dan deposit, yang bukan statik. Ralat menunjukkan bahawa anda cuba merujuk kepada medan baki dari dalam konteks statik.
Penyelesaian:
Untuk menyelesaikan isu ini, anda perlu membuat kaedah pengeluaran dan deposit statik juga. Walau bagaimanapun, adalah tidak digalakkan untuk mengubah suai kaedah asal kerana ia bertujuan untuk beroperasi pada kejadian akaun tertentu. Sebaliknya, buat versi terlebih muatan kaedah ini dalam kaedah utama.
Berikut ialah kod yang dikemas kini:
<code class="java">public class Account { // Static variables public static int id = 0; public static double annualInterestRate = 0; public static java.util.Date dateCreated; // Non-static variables private double balance = 0; public static void main(String[] args) { // Create an instance of Account Account account = new Account(1122, 20000, 4.5); // Overloaded methods (static) double newBalance = withdraw(account.balance, 2500); newBalance = deposit(newBalance, 3000); System.out.println("Balance is " + account.getBalance()); System.out.println("Monthly interest is " + (account.annualInterestRate / 12)); System.out.println("The account was created " + account.getDateCreated()); } // Overloaded methods public static double withdraw(double balance, double withdrawAmount) { balance -= withdrawAmount; return balance; } public static double deposit(double balance, double depositAmount) { balance += depositAmount; return balance; } }</code>
Dengan mencipta kaedah terlampau beban statik, anda kini boleh mengakses medan baki dalam kaedah utama . Kaedah terlebih beban ini mengambil baki semasa sebagai parameter, melaksanakan operasi dan mengembalikan baki yang dikemas kini.
Atas ialah kandungan terperinci Mengapakah saya mendapat ralat Java \'Tidak Dapat Membuat Rujukan Statik ke Medan Bukan Statik\'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!