Rumah >pembangunan bahagian belakang >C++ >Apakah perbezaan antara kaedah membayangi dan mengatasi C#?
c# kaedah tersembunyi dan ditulis semula: Penjelasan terperinci
Dalam C#, kelas yang diperolehi boleh mengendalikan kaedah kelas asas dalam dua cara yang berbeza: kaedah bersembunyi dan menulis semula kaedah. Perbezaan antara memahami kedua -dua konsep ini adalah penting untuk penyelenggaraan kod dan warisan yang berkesan.
Kaedah menyembunyikan
Apabila kelas mengisytiharkan kaedah baru dengan nama yang sama dengan kaedah asas Cina, tetapi tidak ada pernyataan yang jelas sebagai kaedah penulisan semula, kaedah itu akan tersembunyi. Kaedah pernyataan baru dengan berkesan menyembunyikan pelaksanaan kelas asas dan menyediakan pelaksanaan bebasnya sendiri.
Contoh:Apabila CLB memanggil clb.foo () dalam contoh Kelas B, ia melaksanakan pelaksanaan Kelas B dan Output "1". Walau bagaimanapun, apabila kita menukar CLB ke dalam Kelas A, pemanggil mengakses pelaksanaan kelas asas Foo () dan output "5".
menulis semula
<code class="language-csharp">class A { public int Foo(){ return 5;} } class B : A{ public new int Foo() { return 1;} //隐藏 }</code>
Berbeza dengan Tersembunyi, kaedah menulis semula pelaksanaan kaedah pelaksanaan baru dalam kelas derivatif. Ini dicapai dengan menggunakan kata kunci override.
Contoh:
Apabila contoh kelas B memanggil clb.bar (), ia melaksanakan pelaksanaan penulisan semula dalam Kelas B dan output "1". Menukar CLB untuk kategori mandatori A tidak akan menjejaskan tingkah laku, kerana panggilan dan realiti selalu dipanggil.Perbezaan Utama
<code class="language-csharp">class A { public virtual int Bar(){return 5;} } class B : A{ public override int Bar() {return 1;} //重写 }</code>
Tersembunyi Kaedah Yayasan:
Tersembunyi dalam kelas derivatif mencipta kaedah baru, yang menyembunyikan pelaksanaan kelas asas. Penulisan semula menggantikan realisasi kelas asas.Penulisan semula memerlukan kata kunci: Penulisan perlu menggunakan kata kunci menimpa untuk secara eksplisit menunjukkan penggantian yang diharapkan.
Atas ialah kandungan terperinci Apakah perbezaan antara kaedah membayangi dan mengatasi C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!