The Perbezaan utama antara mengatasi dan berlebihan di C# ialah Pengikatan kaedah yang ditimpa panggilan ke takrifnya berlaku semasa runtime sementara pengikatan panggilan kaedah yang terlalu banyak untuk definisi berlaku pada masa penyusunan.
C# adalah bahasa pengaturcaraan umum yang dibangunkan oleh Microsoft. Kelebihan utama C# ialah ia menyokong pengaturcaraan berorientasikan objek (OOP). Satu tiang oop adalah polimorfisme. Ia memberikan objek untuk mempunyai banyak tingkah laku. Terdapat dua jenis polimorfisme yang dikenali sebagai overriding dan overloading. Artikel ini membincangkan perbezaan antara kaedah yang mengatasi dan berlebihan dalam C#.
1. Gambaran Keseluruhan dan Perbezaan Utama
2. Apa yang mengatasi C#
3. Apa yang berlebihan dalam C#
4. Persamaan antara mengatasi dan berlebihan dalam C#
5. Perbandingan sampingan - Mengatasi vs overloading dalam C# dalam bentuk jadual
6. Ringkasan
Ada satu sama lain konsep penting dalam OOP adalah warisan. Ia menggunakan atribut dan kaedah kelas yang sudah ada. Ia meningkatkan kebolehgunaan semula kod. Kelas yang sudah ada adalah kelas asas, dan kelas baru dikenali sebagai kelas yang diperolehi. Dalam mengatasi polimorfisme, harus ada kelas asas dan kelas yang diperoleh. Pengikatan kaedah yang ditimpa panggilan ke definisi berlaku pada masa runtime. Contohnya adalah seperti berikut.
Rajah 01: C# Program dengan mengatasi
Menurut program di atas, bentuk kelas adalah kelas asas, dan ia mengandungi kaedah paparan. Segi empat tepat kelas dan segitiga berasal kelas. Kelas -kelas yang diperoleh ini juga mempunyai kaedah yang sama dengan pelaksanaan mereka sendiri.
Pertama, OBJ pembolehubah rujukan dibuat. Ia menunjukkan objek bentuk. Oleh itu, kaedah paparan kelas bentuk akan dilaksanakan. Kemudian, pemboleh ubah rujukan menunjuk ke objek segi empat tepat. Oleh itu, kaedah paparan kelas segi empat tepat akan melaksanakan. Akhirnya, pemboleh ubah rujukan menunjukkan objek segitiga. Oleh itu, kaedah paparan kelas segitiga akan dilaksanakan. Kaedah paparan kelas asas ditindas oleh kaedah paparan kelas yang diperoleh.
Kaedah untuk dijalankan diputuskan semasa runtime. Kelas bentuk ditulis dengan kata kunci 'maya'. Kelas segi empat tepat dan segitiga ditulis dengan kata kunci 'Override'. Sekiranya kata kunci ini tidak digunakan, output akan mencetak kandungan kaedah paparan kelas bentuk untuk semua.
Dalam beban yang berlebihan, pelbagai kaedah mempunyai nama yang sama tetapi dengan parameter yang berbeza. Parameter boleh menjadi pelbagai jenis. Kaedah juga boleh mempunyai bilangan parameter yang berbeza. Kaedah berlebihan berlaku di kelas yang sama. Pengikatan kaedah yang terlalu banyak untuk definisi berlaku pada masa penyusunan. Rujuk program C# di bawah.
Rajah 02: Program C# dengan beban yang berlebihan
Menurut program di atas, Kelas A mempunyai dua kaedah dengan nama yang sama yang disebut SUM. Mereka mempunyai pelbagai jenis parameter. Dalam program utama, objek A dibuat. Jumlah (2,3) akan menggunakan kaedah jumlah dengan bilangan bulat. Jumlah (5.1, 7.94) akan menggunakan kaedah jumlah dengan nilai berganda. Kedua -dua kaedah mempunyai nama yang sama dan bilangan parameter yang sama. Tetapi jenis parameter berbeza. Kaedah yang diperlukan dipanggil dengan sewajarnya. Overloading juga boleh berlaku jika nama kaedah dan jenis parameter sama tetapi bilangan parameter berbeza.
Mengatasi vs berlebihan di C# | |
Mengatasi C# adalah untuk menyediakan pelaksanaan khusus dalam kaedah kelas yang diperolehi untuk kaedah yang sudah ada di kelas asas. | Overloading di C# adalah untuk membuat pelbagai kaedah dengan nama yang sama dengan pelaksanaan yang berbeza. |
Parameter | |
Dalam C# yang mengatasi, kaedah mempunyai nama yang sama, jenis parameter yang sama dan bilangan parameter yang sama. | Dalam C# overloading, kaedah mempunyai nama yang sama tetapi bilangan parameter yang berbeza atau jenis parameter yang berbeza. |
Kejadian | |
Di C#, mengatasi berlaku di dalam kelas asas dan kelas yang diperolehi. | Di C#, beban berlebihan berlaku dalam kelas yang sama. |
Masa mengikat | |
Pengikatan kaedah yang ditindas untuk definisi berlaku pada masa runtime. | Pengikatan panggilan kaedah yang terlalu banyak untuk definisi berlaku pada masa penyusunan. |
Sinonim | |
Mengatasi dipanggil sebagai Polimorfisme runtime, polimorfisme dinamik atau mengikat lewat. | Beban yang terlalu banyak dipanggil sebagai menyusun polimorfisme masa, Polimorfisme statik atau mengikat awal. |
Mengatasi dan berlebihan adalah dua jenis polimorfisme. Perbezaan antara mengatasi dan berlebihan dalam C# adalah bahawa pengikatan kaedah yang ditimpa panggilan ke definisi berlaku pada runtime sementara pengikatan panggilan kaedah yang terlalu banyak untuk definisi berlaku pada masa penyusunan.
1.Kumar, Mukesh. C# sudut. Terdapat di sini
2.TutorialSpoint.com. "C# Polimorfisme."TutorialSpoint. Terdapat di sini
3.TutorialSpoint.com. "Jenis data C#."TutorialSpoint, tersedia di sini