Rumah >Java >javaTutorial >Apakah perbezaan antara polimorfisme dinamik dan statik di Jawa?

Apakah perbezaan antara polimorfisme dinamik dan statik di Jawa?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-10-30 11:15:20843semak imbas

What is the difference between dynamic and static polymorphism in Java?

Memahami Polimorfisme Dinamik dan Statik dalam Java

Polymorphism dalam Java membenarkan objek dari kelas yang berbeza untuk berkelakuan dengan cara yang sama, walaupun berbeza. Fleksibiliti ini dicapai melalui dua jenis polimorfisme: dinamik dan statik.

Polymorfisme Dinamik
Juga dikenali sebagai polimorfisme masa jalan, polimorfisme dinamik berlaku apabila kaedah menimpa dalam subkelas berlaku. Panggilan kepada kaedah mengatasi diselesaikan pada masa jalan berdasarkan jenis objek sebenar.

Pertimbangkan contoh berikut:

<code class="java">class Animal {
    public void move() {
        System.out.println("Animals can move");
    }
}

class Dog extends Animal {
    @Override
    public void move() {
        System.out.println("Dogs can walk and run");
    }
}

public class Main {
    public static void main(String[] args) {
        Animal animal = new Animal(); // Animal reference and object
        Animal dog = new Dog(); // Animal reference but Dog object

        animal.move(); // Output: Animals can move
        dog.move(); // Output: Dogs can walk and run
    }
}</code>

Dalam contoh ini, kaedah move() ditindih dalam Kelas anjing. Apabila rujukan haiwan memanggil kaedah move(), jenis sebenar objek (Haiwan atau Anjing) menentukan tingkah laku semasa masa jalanan. Ini ialah polimorfisme dinamik.

Polymorfisme Statik (Pemuatan Terlebih Kaedah)
Polymorfisme statik, juga dipanggil polimorfisme masa kompilasi, berlaku apabila berbilang kaedah dengan nama yang sama tetapi senarai parameter yang berbeza wujud dalam kelas yang sama. Panggilan kepada kaedah yang betul ditentukan pada masa penyusunan berdasarkan bilangan dan jenis hujah yang diluluskan.

Pertimbangkan contoh berikut:

<code class="java">class Calculation {
    void sum(int a, int b) {
        System.out.println(a + b);
    }

    void sum(int a, int b, int c) {
        System.out.println(a + b + c);
    }

    public static void main(String[] args) {
        Calculation calculation = new Calculation();
        calculation.sum(10, 10, 10); // Output: 30
        calculation.sum(20, 20); // Output: 40
    }
}</code>

Dalam contoh ini, jumlah() kaedah terlebih beban dengan senarai parameter yang berbeza. Panggilan kepada kaedah jumlah() yang betul ditentukan pada masa penyusunan berdasarkan bilangan hujah yang diluluskan. Ini ialah polimorfisme statik atau kaedah terlebih beban.

Atas ialah kandungan terperinci Apakah perbezaan antara polimorfisme dinamik dan statik di Jawa?. 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