Rumah >pembangunan bahagian belakang >C++ >C# Kaedah Mengatasi: Maya/Override vs New - Apa perbezaannya?
Dalam pengaturcaraan berorientasikan objek, kaedah overriding membenarkan kelas terbitan menyediakan pelaksanaan sendiri kaedah yang diwarisi daripada kelas asas. C# menawarkan dua cara yang berbeza untuk mengatasi kaedah: kata kunci "maya" dan "override", atau hanya mengisytiharkan kaedah baharu dengan tandatangan yang sama.
Apabila sesuatu kaedah diisytiharkan sebagai "maya" dalam kelas asas, ia boleh ditindih dalam kelas terbitan menggunakan kata kunci "override". Pendekatan ini membolehkan kelas terbitan menyediakan pelaksanaannya sendiri sambil mengekalkan tandatangan kaedah asal. Pada masa larian, apabila objek adalah daripada jenis terbitan, kaedah yang diganti akan dipanggil walaupun pembolehubah rujukan yang memegang objek adalah daripada jenis asas.
Sebagai alternatif, kaedah boleh diganti dalam kelas terbitan dengan mengisytiharkan kaedah baharu dengan tandatangan yang sama dan menandakannya sebagai "baru". Kaedah ini menggantikan sepenuhnya pelaksanaan dalam kelas asas dan kaedah yang diganti dipanggil tanpa mengira jenis objek masa jalan.
Untuk menggambarkan perbezaannya, pertimbangkan coretan kod berikut:
<code class="language-csharp">public class Foo { public virtual bool DoSomething() { return false; } } public class Bar : Foo { public override bool DoSomething() { return true; } }</code>
Jika kita memanggil kod seperti berikut:
<code class="language-csharp">Foo a = new Bar(); a.DoSomething();</code>
Hasilnya berbeza-beza bergantung pada kaedah yang digunakan untuk menulis semula:
Ringkasnya, perbezaan utama antara "maya" "override" dan "baharu" untuk mengatasi kaedah ialah:
Atas ialah kandungan terperinci C# Kaedah Mengatasi: Maya/Override vs New - Apa perbezaannya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!