Rumah >pembangunan bahagian belakang >C++ >Apakah perbezaan antara kata kunci `new` dan` override` untuk kaedah dalam warisan C#?

Apakah perbezaan antara kata kunci `new` dan` override` untuk kaedah dalam warisan C#?

DDD
DDDasal
2025-01-28 12:01:09878semak imbas

What's the Difference Between `new` and `override` Keywords for Methods in C# Inheritance?
3

Dalam pengaturcaraan yang berorientasikan objek, warisan membolehkan fungsi warisan dan pengembangan kelas asas. Apabila menentukan kaedah dalam derivatif, pemaju sering menggunakan kata kunci "baru" dan "mengatasi". Walaupun kedua -dua kata kunci ini seolah -olah mempunyai kesan yang sama, tujuan mereka sangat berbeza.

Situasi 1: new Kata kunci override Kaedah kata kunci mewakili kelas yang diperolehi adalah kaedah baru, yang tidak ada kaitan dengan sebarang kaedah dalam kelas asas. Walaupun kelas asas mempunyai nama yang sama, kaedah

akan mempunyai pelaksanaan berasingan kelas yang diperolehi.

Situasi 2:

Kata kunci new Sebaliknya, kata kunci menunjukkan pelaksanaan kaedah yang sama dalam kelas asas. Penyusun memastikan bahawa kaedah akan menggunakan pelaksanaan terkini rantaian warisan, walaupun objek dirujuk oleh rujukan kelas asas.

perbezaan tingkah laku new new Perbezaan utama antara

dan

adalah bagaimana mereka mengendalikan panggilan kaedah. Jika kaedah dipanggil pada rujukan kelas asas, ia akan melaksanakan pelaksanaan kelas derivatif. Walau bagaimanapun, jika kaedah dipanggil, ia akan melaksanakan pelaksanaan kelas yang diperolehi, tanpa mengira jenis rujukan. override Contoh Tatabahasa

override Kod berikut menunjukkan perbezaan antara override dan

:

Dalam contoh ini, memanggil () untuk melaksanakan pelaksanaan kelas yang diperolehi pada objek jenis yang diperolehi. Walau bagaimanapun, panggilan () untuk melaksanakan pelaksanaan asal di pangkalan () pada objek jenis asas, kerana derived.doit () adalah kaedah baru.

Gunakan kes new override new override

:

Apabila kelas derivatif perlu digunakan sepenuhnya berbanding dengan kelas asas, ia digunakan apabila ia berbeza sepenuhnya dari kelas asas.

:

Apabila kelas derivatif ingin menyediakan kaedah yang berbeza atau lebih baik untuk mewarisi kelas berasaskan diri, gunakannya. new override

Atas ialah kandungan terperinci Apakah perbezaan antara kata kunci `new` dan` override` untuk kaedah 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