Rumah > Java > javaTutorial > teks badan

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

Susan Sarandon
Lepaskan: 2024-11-01 18:10:02
asal
343 orang telah melayarinya

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan