Rumah >pembangunan bahagian belakang >C++ >Apakah perbezaan antara kata kunci `new` dan` override` untuk kaedah dalam warisan C#?
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
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
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!