Rumah >Java >javaTutorial >Mengapa Saya Mendapat Ralat \'Tidak Dapat Membuat Rujukan Statik kepada Medan Bukan Statik\' dan \'Tidak Dapat Membuat Rujukan Statik kepada Kaedah Bukan Statik\' dalam Java?
JAVA: Memahami "Tidak Boleh Membuat Rujukan Statik kepada Medan Bukan Statik" dan "Tidak Boleh Membuat Rujukan Statik kepada Kaedah Bukan Statik"
Pengaturcaraan Java selalunya melibatkan memanipulasi medan dan kaedah yang sama ada statik atau tidak statik. Memahami perbezaan antara kedua-duanya boleh menjadi penting untuk mengelakkan ralat biasa.
Statik vs. Bukan Statik
Medan dan kaedah statik dikaitkan dengan kelas itu sendiri, sebaliknya daripada dengan mana-mana objek tertentu dalam kelas. Mereka boleh diakses terus menggunakan nama kelas, tanpa perlu mencipta objek. Sebaliknya, medan dan kaedah bukan statik adalah contoh khusus dan memerlukan objek kelas untuk digunakan.
Ralat "Tidak Boleh Membuat Rujukan Statik kepada Medan/Kaedah Bukan Statik"
Ralat ini timbul apabila anda cuba mengakses medan atau kaedah bukan statik dari dalam konteks statik, seperti daripada kaedah statik atau daripada dalam pengisytiharan kelas itu sendiri. Untuk menyelesaikan ralat ini, anda boleh mengisytiharkan medan atau kaedah sebagai statik, atau anda boleh mencipta contoh kelas dan mengakses ahli bukan statik melalui contoh objek.
Dalam kod contoh yang anda berikan:
<code class="java">public class Cerchio { float r; // non-static field float area; // non-static field float cfr; // non-static field public static void main(String[] args) { r = 5; // Error: Cannot access non-static field 'r' from static method 'main' // ... } }</code>
Anda cuba mengakses medan bukan statik r terus daripada kaedah utama statik, menyebabkan ralat. Pendekatan yang betul adalah untuk mencipta contoh kelas Cerchio dan akses r melalui objek, seperti yang ditunjukkan di bawah:
<code class="java">public class Cerchio { float r; // non-static field float area; // non-static field float cfr; // non-static field public static void main(String[] args) { Cerchio cerchio = new Cerchio(); cerchio.r = 5; // OK: Accessing non-static field through an object // ... } }</code>
Dengan mematuhi peraturan ini, anda boleh mengelakkan "Tidak Boleh Membuat Rujukan Statik kepada Bukan- Ralat Medan/Kaedah Statik" dan tulis kod Java yang lebih bersih dan lebih mantap.
Atas ialah kandungan terperinci Mengapa Saya Mendapat Ralat \'Tidak Dapat Membuat Rujukan Statik kepada Medan Bukan Statik\' dan \'Tidak Dapat Membuat Rujukan Statik kepada Kaedah Bukan Statik\' dalam Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!