Kaedah mengatasi dan kaedah menyembunyikan dalam C#
Dalam C#, kaedah mengatasi dan menyembunyikan kaedah ialah dua mekanisme berbeza untuk mengubah suai kaedah yang diwarisi.
Kaedah Mengatasi
Penggantian kaedah melibatkan penciptaan kaedah maya dalam kelas asas dan mentakrifkan semula pelaksanaannya dalam kelas terbitan. Ini membolehkan kelas terbitan menyediakan versi kaedah yang lebih khusus atau diubah suai sambil mengekalkan nama dan parameter kaedah yang sama.
Penggantian kaedah digunakan dalam situasi berikut:
override
dalam pengisytiharan kaedah dalam kelas terbitan. Kaedah Menyembunyikan
Kaedah penyembunyian melibatkan mencipta kaedah baharu (baru) dengan nama dan parameter yang sama seperti kaedah kelas asas. Tidak seperti kaedah mengatasi, kaedah menyembunyikan mencipta kaedah baharu sepenuhnya dalam kelas terbitan dan tidak mengubah suai kaedah kelas asas.
Kaedah penyembunyian digunakan dalam situasi berikut:
new
dalam pengisytiharan kaedah dalam kelas terbitan. Aplikasi Praktikal
Kaedah Menggantikan:
Kaedah Menyembunyikan:
Contoh
Contoh berikut menunjukkan penggantian kaedah dan penyembunyian kaedah:
<code class="language-csharp">class Animal { public virtual void MakeSound() { Console.WriteLine("Generic animal sound"); } } class Dog : Animal { public override void MakeSound() { Console.WriteLine("Bark"); } public new void Run() // 方法隐藏 { Console.WriteLine("Dog running"); } }</code>
Dalam contoh ini, kaedah MakeSound
ditindih dalam kelas Dog
untuk menyediakan pelaksanaan yang konkrit. Kaedah Run
disembunyikan dan kaedah baharu dicipta dalam kelas Dog
.
Atas ialah kandungan terperinci Mengatasi vs. Menyembunyikan dalam C#: Apakah Perbezaannya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!