Rumah >Java >javaTutorial >Kata Kunci Statik: Mengakses Ahli Statik dan Bukan Statik dalam Kaedah
Dalam siaran ini, kami akan menumpukan pada cara kaedah berinteraksi dengan ahli statik dan bukan statik dan mengapa pembolehubah tempatan statik tidak dibenarkan. Ini ialah topik temu bual biasa dan konsep penting untuk pembangun Java.
Siaran ini dibina berdasarkan konsep yang diliputi dalam siaran terdahulu siri ini. Jika anda baru menggunakan kata kunci statik, saya syorkan anda menyemak Blok Statik dan Pembolehubah Statik untuk mendapatkan asas yang lebih baik sebelum menyelami topik yang dibincangkan di sini.
Memandangkan kaedah statik beroperasi di peringkat kelas, mereka tidak boleh mengakses ahli contoh secara langsung.
package keywords.static_keyword; public class StaticVariables { // Static and non-static variables static int idStatic = 1; // Shared across all instances int id; // Unique to each instance String name; // Unique to each instance // Static block – Runs once when the class is loaded static { displayStatic(); // Call to static method // Cannot access non-static method in static block display(); // --> Compilation error } // Constructor to initialize non-static variables public StaticVariables(String name) { this.id = ++idStatic; // Increment static ID for every new instance this.name = name; } // Non-static method: Can access both static and non-static members void display() { System.out.println("Instance Method:"); System.out.println("Static ID: " + idStatic + ", Instance ID: " + id + ", Name: " + name); } // Static method: Can only access static members directly static void displayStatic() { System.out.println("Static Method:"); System.out.println("Static ID: " + idStatic); // Static local variables are not allowed static int localVar = 10; // --> Compilation error } public static void main(String[] args) { // Call static method directly displayStatic(); // Create instances to access non-static methods StaticVariables obj1 = new StaticVariables("Object1"); StaticVariables obj2 = new StaticVariables("Object2"); // Access non-static methods through objects obj1.display(); obj2.display(); } }
Java tidak membenarkan pembolehubah setempat statik di dalam kaedah atau blok.
package keywords.static_keyword; public class StaticVariables { // Static and non-static variables static int idStatic = 1; // Shared across all instances int id; // Unique to each instance String name; // Unique to each instance // Static block – Runs once when the class is loaded static { displayStatic(); // Call to static method // Cannot access non-static method in static block display(); // --> Compilation error } // Constructor to initialize non-static variables public StaticVariables(String name) { this.id = ++idStatic; // Increment static ID for every new instance this.name = name; } // Non-static method: Can access both static and non-static members void display() { System.out.println("Instance Method:"); System.out.println("Static ID: " + idStatic + ", Instance ID: " + id + ", Name: " + name); } // Static method: Can only access static members directly static void displayStatic() { System.out.println("Static Method:"); System.out.println("Static ID: " + idStatic); // Static local variables are not allowed static int localVar = 10; // --> Compilation error } public static void main(String[] args) { // Call static method directly displayStatic(); // Create instances to access non-static methods StaticVariables obj1 = new StaticVariables("Object1"); StaticVariables obj2 = new StaticVariables("Object2"); // Access non-static methods through objects obj1.display(); obj2.display(); } }
static void displayStatic() { static int localVar = 10; // --> Compilation error }
Context | Access Static Members | Access Non-Static Members | Allow Static Local Variables? |
---|---|---|---|
Static Method | Yes | No | No |
Non-Static Method | Yes | Yes | No |
Static Block | Yes | No | No |
Kaedah dan ahli statik ialah alatan penting dalam Java. Berikut ialah pengambilan utama:
Dengan memahami peraturan ini, anda akan dapat menggunakan kaedah statik dengan berkesan dalam program anda.
Asas Java
Keperluan Temuduga Tatasusunan
Java Memory Essentials
Kerangka Kerja Koleksi Penting
Selamat Pengekodan!
Atas ialah kandungan terperinci Kata Kunci Statik: Mengakses Ahli Statik dan Bukan Statik dalam Kaedah. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!