Rumah  >  Artikel  >  Java  >  Bolehkah Kaedah Statik Ditindih di Java? Jawapan Yang Mengejutkan.

Bolehkah Kaedah Statik Ditindih di Java? Jawapan Yang Mengejutkan.

Barbara Streisand
Barbara Streisandasal
2024-10-28 18:04:02411semak imbas

Can Static Methods be Overridden in Java? The Surprising Answer.

Kaedah Statik Overriding vs. Overloading dalam Java

Kaedah statik adalah bahagian penting dalam pengaturcaraan berorientasikan objek, tetapi tingkah laku mereka dalam Java boleh menjadi agak mengelirukan, terutamanya apabila ia berkaitan dengan overriding dan overloading.

Overriding Kaedah Statik

Java tidak membenarkan kaedah statik ditindih dalam erti kata tradisional. Ini kerana kaedah statik terikat kepada kelas, bukan kepada contoh tertentu kelas. Oleh itu, apabila subkelas mentakrifkan kaedah statik baharu dengan nama yang sama dengan kaedah dalam kelas induk, ia tidak mengatasi kaedah induk. Sebaliknya, ia menyembunyikannya.

Menyembunyikan bermakna pengkompil akan sentiasa memanggil kaedah statik subkelas, tanpa mengira jenis objek yang menggunakan kaedah tersebut. Ini kerana kaedah ini diselesaikan pada masa penyusunan, bukan pada masa jalan.

Melebihi Muatan Kaedah Statik

Berbeza dengan overriding, lebihan muatan boleh dilakukan dengan kaedah statik di Java. Lebihan beban merujuk kepada keupayaan untuk mempunyai berbilang kaedah dengan nama yang sama tetapi senarai parameter yang berbeza. Java membenarkan kaedah statik dibebankan, sama seperti kaedah contoh.

Kod berikut menunjukkan perbezaan antara kaedah statik overriding dan overloading:

<code class="java">class Parent {
    public static void method() {
        System.out.println("Parent method");
    }
}

class Child extends Parent {
    // Hides the static method in the parent class
    public static void method() {
        System.out.println("Child method");
    }

    // Overloads the static method in the parent class
    public static void method(int x) {
        System.out.println("Child method with parameter");
    }
}

public class Main {
    public static void main(String[] args) {
        Parent p = new Child();
        p.method(); // Calls the static method in the Child class
        Child.method(); // Also calls the static method in the Child class
        Child.method(10); // Calls the overloaded static method in the Child class
    }
}</code>

Output:

Child method
Child method
Child method with parameter

Dalam contoh di atas, kaedah method() dalam kelas Child menyembunyikan kaedah method() dalam kelas Parent. Walau bagaimanapun, kaedah kaedah(int x) dalam kelas Kanak-kanak melebihkan kaedah kaedah() dalam kelas Induk.

Atas ialah kandungan terperinci Bolehkah Kaedah Statik Ditindih di Java? Jawapan Yang Mengejutkan.. 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