Siaran ini melanjutkan perbincangan kami sebelum ini tentang kata kunci statik dengan menumpukan pada konsep melebihi muatan kaedah dan mengatasi kaedah dalam konteks statik kaedah. Kami juga akan meneroka cara kata kunci ini dan super berkelakuan (atau tidak) dalam konteks statik.
Jika anda baru menggunakan kata kunci statik, mungkin berguna untuk terlebih dahulu melalui Pembolehubah Statik dan Kaedah Statik.
Memandangkan siaran ini menyentuh gelagat ini dan super dalam konteks statik, anda juga mungkin mahu membaca Kata Kunci dan Kata Kunci Super Ini.
Melebihi muatan Kaedah Statik
Mengapa Kaedah Statik Tidak Boleh Ditolak
Menggunakan ini dan Kata Kunci super dalam Konteks Statik
Contoh Menunjukkan Konsep Utama
Di Java, lebih muatan membenarkan kaedah dengan nama yang sama wujud dengan senarai parameter yang berbeza. Kaedah statik boleh dibebankan seperti kaedah contoh. Walau bagaimanapun, perlu diingat bahawa beban berlebihan berlaku pada masa penyusunan.
package keywords.static_keyword; public class StaticVariables { static int idStatic = 1; public StaticVariables(String name) { this.id = ++idStatic; this.name = name; } int id; String name; static void displayText() { System.out.println("DisplayText called. ID: " + idStatic); } // Overloaded static method with a parameter static void displayText(String name) { System.out.println("Overloaded DisplayText called. Name: " + name); } public static void main(String[] args) { StaticVariables.displayText(); StaticVariables.displayText("Static Overload Example"); } }
Kaedah Terlebih Muatan: Kaedah displayText terlebih dimuatkan dengan dua versi—satu tanpa parameter dan satu dengan parameter Rentetan.
Ini adalah sah kerana Java boleh membezakan kedua-dua kaedah berdasarkan senarai parameter mereka semasa masa penyusunan.
Java tidak membenarkan mengatasi kaedah statik. Memandangkan kaedah statik terikat kepada kelas dan bukannya pada contoh objek, mereka tidak mengambil bahagian dalam polimorfisme masa jalan, yang merupakan asas penggantian kaedah.
Walau bagaimanapun, pembolehubah statik diwarisi dan boleh diakses atau diubah suai oleh kelas kanak-kanak.
package keywords.static_keyword; public class StaticVariables { static int idStatic = 1; public StaticVariables(String name) { this.id = ++idStatic; this.name = name; } int id; String name; static void displayText() { System.out.println("DisplayText called. ID: " + idStatic); } // Overloaded static method with a parameter static void displayText(String name) { System.out.println("Overloaded DisplayText called. Name: " + name); } public static void main(String[] args) { StaticVariables.displayText(); StaticVariables.displayText("Static Overload Example"); } }
package keywords.static_keyword; public class CannotOverrideStaticMethod extends StaticVariables { public CannotOverrideStaticMethod(String name) { super(name); } // Attempting to override the static method // This will cause a compile-time error /* @Override static void displayText() { System.out.println("Overridden DisplayText"); } */ @Override void display() { // Static variables are inherited from the parent class idStatic = 90; // Access and modify the parent's static variable System.out.println("ID: " + idStatic + ", Name: " + name); super.display(); // Call the parent class's non-static method } // Correct way to use static methods from the parent class static void displayText() { StaticVariables.displayText(); // Call the parent class static method } public static void main(String[] args) { displayText(); // Calls the static method defined in this class } }
static void displayText() { // Cannot use 'this' in a static context this.display(); // --> Compile-time error }
Dalam siaran ini, kami membincangkan nuansa melebihi beban dan mengatasi kaedah statik, membincangkan kekangan menggunakan ini dan super dalam konteks statik dan menerangkan cara pembolehubah statik berkelakuan merentas warisan. Konsep ini penting untuk memahami cara ahli statik berbeza daripada ahli instance di Java.
Asas Java
Keperluan Temuduga Tatasusunan
Java Memory Essentials
Kerangka Koleksi Penting
Selamat Pengekodan!
Atas ialah kandungan terperinci Kata Kunci Statik: Berlebihan, Mengatasi dan Peranan ini dan super. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!