Rumah >pembangunan bahagian belakang >C++ >Apakah perbezaan antara `New` dan` override` dalam warisan C#?

Apakah perbezaan antara `New` dan` override` dalam warisan C#?

Mary-Kate Olsen
Mary-Kate Olsenasal
2025-01-28 12:07:08803semak imbas

What's the Difference Between `new` and `override` in C# Inheritance?

warisan: pemahaman

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

mesti

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 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

bila menggunakan setiap pengubah:

  • Gunakan

    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. new

  • Gunakan

    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. override

dengan memahami perbezaan ini, anda boleh menggunakan warisan dan polimorfisme dengan berkesan dalam aplikasi C# anda.

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!

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