Perbezaan antara kaedah berlebihan dan mengatasi

Perbezaan antara kaedah berlebihan dan mengatasi

Kaedah berlebihan

Kaedah overloading, juga dikenali sebagai fungsi overloading atau kompilasi polimorfisme masa, adalah konsep mempunyai dua atau lebih kaedah dengan nama yang sama tetapi tandatangan yang berbeza dalam skop yang sama. Terdapat banyak bahasa pengaturcaraan yang menyokong ciri ini: ADA, C ++, C#, D, dan Java.

Contoh kaedah yang berlebihan dalam C#
Seperti yang ditunjukkan dalam contoh di atas, kaedah 'poligon' adalah terlalu banyak 3 kali dengan tandatangan kaedah yang berbeza, i.e jenis atau bilangan parameter berbeza.

Kaedah mengatasi

Kaedah yang mengatasi, juga dikenali sebagai fungsi yang mengatasi atau menjalankan polimorfisme masa, adalah ciri OOP yang membolehkan kelas kanak -kanak memberikan pelaksanaannya sendiri kepada kaedah yang ditakrifkan dalam kelas induk. Pelaksanaan dalam kelas kanak -kanak mengatasi definisi kaedah dalam kelas asas, dengan syarat kaedah dalam kelas kanak -kanak harus mempunyai nama yang sama, tandatangan dan jenis kembali.

Contoh kaedah yang mengatasi C#
Di sini, kaedah Draw dalam kelas Source2 mengatasi kaedah Draw yang ditakrifkan dalam kelas Source1.

Perbezaan antara kaedah berlebihan dan kaedah mengatasi

  1. Dalam kaedah kaedah beban mesti mempunyai tandatangan yang berbeza. Dalam kaedah, kaedah utama mesti mempunyai tandatangan yang sama.
  2. Fungsi berlebihan adalah untuk "menambah" atau "melanjutkan" lebih banyak kepada tingkah laku kaedah. Fungsi yang mengatasi adalah untuk sepenuhnya "mengubah" atau "mentakrifkan" tingkah laku kaedah.
  3. Kaedah overloading digunakan untuk mencapai polimorfisme masa kompilasi; kaedah mengatasi digunakan untuk mencapai polimorfisme jangka masa.
  4. Dalam kaedah/fungsi overloading compiler tahu objek mana yang diberikan kepada kelas mana pada masa penyusunan, tetapi dalam kaedah yang mengatasi maklumat ini tidak diketahui hingga runtime.
  5. Fungsi berlebihan berlaku di kelas yang sama manakala utama yang berlaku di kelas yang diperolehi dari kelas asas.