Rumah  >  Artikel  >  Java  >  Bagaimanakah Kaedah Overriding dan Kaedah Overloading Berbeza dalam Java?

Bagaimanakah Kaedah Overriding dan Kaedah Overloading Berbeza dalam Java?

Linda Hamilton
Linda Hamiltonasal
2024-10-27 20:08:30441semak imbas

How do Method Overriding and Method Overloading Differ in Java?

Membezakan Polimorfisme Dinamik dan Statik dalam Java

Memahami perbezaan antara polimorfisme dinamik dan statik adalah penting dalam pengaturcaraan berorientasikan objek dengan Java. Artikel ini akan memberikan penjelasan dan contoh yang ringkas untuk menjelaskan konsep ini.

Polymorphism Dinamik lwn. Statik

Polymorphism membenarkan satu nama kaedah mempunyai berbilang pelaksanaan bergantung pada jenis objek memanggilnya. Terdapat dua jenis polimorfisme utama:

  • Polymorfisme Dinamik (Pengikatan Masa Jalan): Panggilan kaedah diselesaikan pada masa jalan berdasarkan kelas objek sebenar. Ia berlaku dengan kaedah mengatasi dalam subkelas dan juga dikenali sebagai pengikatan lewat.
  • Polimorfisme Statik (Pengikatan Masa Kompilasi): Panggilan kaedah diselesaikan pada masa kompilasi berdasarkan jenis yang diisytiharkan pembolehubah rujukan. Ia berlaku dengan kaedah terlebih beban dalam kelas yang sama dan juga dikenali sebagai pengikatan awal.

Kaedah Lebih Muatan

Kaedah lebihan beban ialah satu bentuk polimorfisme statik di mana berbilang kaedah dengan nama yang sama wujud dalam kelas yang sama tetapi berbeza dalam parameternya. Apabila memanggil kaedah terlebih beban, Java menentukan kaedah yang sesuai untuk digunakan berdasarkan bilangan dan jenis argumen yang dihantar masuk.

Contoh Kod (Pemuatan Terlebih Kaedah):

<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 obj = new Calculation();
    obj.sum(10, 10, 10); // Output: 30
    obj.sum(20, 20); // Output: 40
  }
}</code>

Timpa Kaedah

Timpa kaedah ialah satu bentuk polimorfisme dinamik di mana kaedah dengan nama dan tandatangan yang sama diisytiharkan dalam kelas yang berbeza tetapi berkongsi kelas induk yang sama. Apabila memanggil kaedah yang diganti, Java menentukan kaedah untuk memanggil berdasarkan kelas sebenar objek pada masa jalan.

Contoh Kod (Penggantian Kaedah):

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

class Dog extends Animal {

  public void move() {
    System.out.println("Dogs can walk and run");
  }
}

public class TestDog {

  public static void main(String[] args) {
    Animal a = new Animal(); // Animal reference and object
    Animal b = new Dog(); // Animal reference but Dog object

    a.move(); // Output: Animals can move

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

Atas ialah kandungan terperinci Bagaimanakah Kaedah Overriding dan Kaedah Overloading Berbeza dalam Java?. 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