Rumah >pembangunan bahagian belakang >C++ >Apakah perbezaan antara `New` dan` override` dalam warisan C#?
dan new
override
dalam warisan C Penjelasan ini menjelaskan perbezaan dan penggunaan yang sesuai.
new
pengubah: Menentukan kaedah berasingan override
Pengubahsuaian membolehkan kelas yang diperoleh untuk memperkenalkan kaedah dengan nama yang sama sebagai kaedah dalam kelas asasnya. Secara kritis, ini new
tidak mengatasi kaedah kelas asas; Sebaliknya, ia mewujudkan kaedah yang sepenuhnya bebas.
new
Contoh:
di sini, adalah kaedah yang berbeza. Memanggil pada contoh
melaksanakan versi kelas yang diperolehi; Memanggilnya pada contoh<code class="language-csharp">public class BaseClass { public void MyMethod() { Console.WriteLine("BaseClass Method"); } } public class DerivedClass : BaseClass { public new void MyMethod() { Console.WriteLine("DerivedClass Method"); } }</code>melaksanakan versi kelas asas.
DerivedClass.MyMethod()
MyMethod()
DerivedClass
pengubah: Menggantikan kaedah maya BaseClass
Pengubahsuaian digunakan untuk menggantikan pelaksanaan kaedah override
maya dari kelas asas. Kaedah kelas asas
diisytiharkan sebagai override
(atau ). memastikan versi kelas yang diperolehi dipanggil apabila kaedah itu dipanggil atas contoh kelas yang diperolehi.
virtual
Contoh: abstract
override
Dalam kes ini, mengatasi . Memanggil
pada contoh<code class="language-csharp">public class BaseClass { public virtual void MyMethod() { Console.WriteLine("BaseClass Method"); } } public class DerivedClass : BaseClass { public override void MyMethod() { Console.WriteLine("DerivedClass Method"); } }</code>
selalu bila menggunakan setiap pengubah: apabila anda mahu kaedah yang sepenuhnya berasingan dalam kelas yang diperoleh, walaupun ia berkongsi nama dengan kaedah dalam kelas asas. Ini berguna untuk mengelakkan mengatasi dan mengekalkan fungsi yang berbeza. Apabila anda berhasrat untuk melanjutkan atau mengubah suai tingkah laku kaedah maya yang ditakrifkan dalam kelas asas, menyediakan pelaksanaan khusus dalam kelas yang diperolehi sementara masih mengekalkan hubungan warisan untuk kaedah tertentu. DerivedClass.MyMethod()
melaksanakan versi BaseClass.MyMethod()
. MyMethod()
DerivedClass
Perbezaan utama yang diringkaskan: DerivedClass
Ciri
Penciptaan kaedah
mencipta kaedah yang sama sekali baru
Menggantikan kaedah maya yang ada
warisan
memecahkan rantai warisan untuk kaedah
mengekalkan rantai warisan
Kaedah kelas asas
Kaedah kelas asas tetap tidak terjejas
kaedah kelas asas mestilah maya/abstrak
dengan memahami perbezaan ini, anda boleh menggunakan warisan dan polimorfisme dengan berkesan dalam aplikasi C# anda. new
override
Atas ialah kandungan terperinci Apakah perbezaan antara `New` dan` override` dalam warisan C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!