Warisan Kaedah Statik dalam Java
Dokumentasi mengenai warisan dalam Java menerangkan bahawa ahli diwarisi berdasarkan kebolehcapaian mereka. Walau bagaimanapun, nampaknya terdapat percanggahan apabila melibatkan kaedah statik.
Menurut dokumentasi, kaedah statik tidak diwarisi. Tetapi kod berikut menunjukkan bahawa kaedah statik boleh diakses dalam subkelas:
class A { public static void display() { System.out.println("Inside static method of superclass"); } } class B extends A { public void show() { // This works - accessing display() by its simple name - // meaning it is inherited according to the book. display(); } }
Bagaimana ini boleh dilakukan?
Jawapannya terletak pada pelaksanaan asas warisan di Jawa. Semua kaedah yang boleh diakses diwarisi oleh subkelas, tanpa mengira jenisnya (statik atau contoh). Walau bagaimanapun, terdapat perbezaan yang ketara antara pewarisan kaedah statik dan contoh.
Apabila kaedah statik baharu dengan tandatangan yang sama ditakrifkan dalam subkelas, kaedah statik lama disembunyikan dan bukannya ditindih. Ini bermakna kaedah statik baharu diutamakan apabila dipanggil daripada subkelas. Walau bagaimanapun, kaedah statik asal masih boleh diakses menggunakan nama superclass.
Sebaliknya, apabila kaedah tika ditindih dalam subkelas, kaedah tika baharu menggantikan sepenuhnya kaedah tika lama. Inilah sebabnya mengapa kaedah contoh yang diwarisi tidak boleh diakses dengan nama ringkasnya dalam subkelas.
Oleh itu, walaupun kaedah statik tidak disebut secara eksplisit sebagai diwarisi dalam dokumentasi Java, kaedah tersebut diwarisi secara tersirat bersama semua ahli lain yang boleh diakses. Satu-satunya perbezaan dalam pewarisan kaedah statik ialah ia boleh disembunyikan oleh kaedah statik dengan tandatangan yang sama dalam subkelas.
Atas ialah kandungan terperinci Adakah Kaedah Statik Mewarisi di Jawa?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!