Rumah  >  Artikel  >  Java  >  Mengapakah Saya Tidak Boleh Mengakses Medan Bukan Statik daripada Kaedah Statik?

Mengapakah Saya Tidak Boleh Mengakses Medan Bukan Statik daripada Kaedah Statik?

Patricia Arquette
Patricia Arquetteasal
2024-11-01 04:38:02451semak imbas

Why Can't I Access a Non-Static Field from a Static Method?

Merujuk Medan Bukan Statik daripada Kaedah Statik

Apabila menghadapi ralat "tidak boleh membuat rujukan statik kepada medan bukan statik," adalah penting untuk memahami perbezaan antara medan dan kaedah statik dan bukan statik.

Medan dan kaedah statik ialah atribut dan fungsi peringkat kelas yang tidak dikaitkan dengan mana-mana contoh objek tertentu. Sebaliknya, medan dan kaedah bukan statik adalah khusus contoh dan hanya mempunyai makna dalam konteks tika kelas.

Dalam konteks kod yang disediakan, kaedah utama ditandakan sebagai percubaan statik untuk mengakses imbangan medan bukan statik. Walau bagaimanapun, ini tidak dibenarkan, kerana kaedah statik tidak boleh merujuk secara langsung medan bukan statik. Sebabnya, kaedah statik tidak mempunyai rujukan tersirat kepada contoh tertentu kelas.

Untuk menyelesaikan isu ini, anda boleh sama ada menjadikan kaedah utama bukan statik (mengalih keluar kata kunci "statik" daripadanya. pengisytiharan) atau ubah suai kaedah pengeluaran dan deposit untuk menggunakan akses peringkat contoh kepada medan baki. Contohnya:

<code class="java">public Account() {
    // ...
    balance = 20000;
}

public void withdraw(double withdrawAmount) {
    balance -= withdrawAmount;
}</code>

Sebagai alternatif, anda boleh menentukan kaedah statik untuk melaksanakan operasi pengeluaran dan deposit jika dikehendaki.

Atas ialah kandungan terperinci Mengapakah Saya Tidak Boleh Mengakses Medan Bukan Statik daripada Kaedah 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