Rumah  >  Artikel  >  Java  >  Mengapakah saya mendapat ralat Java \"Tidak Dapat Membuat Rujukan Statik ke Medan Bukan Statik\"?

Mengapakah saya mendapat ralat Java \"Tidak Dapat Membuat Rujukan Statik ke Medan Bukan Statik\"?

Susan Sarandon
Susan Sarandonasal
2024-11-01 18:10:02275semak imbas

Why am I getting the Java error

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn