Penggunaan kata kunci maya dan baharu dalam C#
Dalam pengaturcaraan berorientasikan objek, kaedah biasanya ditakrifkan dalam kelas asas dan ditindih atau ditakrifkan semula dalam kelas terbitan. Walaupun kata kunci "maya" dan "baharu" boleh digunakan untuk mengubah suai pengisytiharan kaedah, kata kunci tersebut dilaksanakan dengan cara yang berbeza.
tulis semula maya
kata kunci baharu
Contoh
Pertimbangkan kod berikut:
<code class="language-csharp">public class Base { public virtual bool DoSomething() { return false; } } public class Derived : Base { public override bool DoSomething() { return true; } }</code>
Jika kita mencipta contoh Derived dan menyimpannya dalam pembolehubah jenis Base, panggilan ke DoSomething() akan memanggil kaedah yang diganti dalam Derived:
<code class="language-csharp">Base a = new Derived(); a.DoSomething(); // 返回 true</code>
Sebaliknya, jika kita menggunakan kata kunci baharu dalam Derived, panggilan ke DoSomething() akan menggunakan kaedah baharu dalam Derived, walaupun pembolehubah adalah jenis Base:
<code class="language-csharp">public class Derived : Base { public new bool DoSomething() { return true; } }</code>
<code class="language-csharp">Base a = new Derived(); a.DoSomething(); // 返回 true (Derived 中的新方法)</code>
Bila hendak menggunakan penggantian maya berbanding baharu
Atas ialah kandungan terperinci Maya vs baru dalam C#: Bilakah untuk mengatasi atau menyembunyikan kaedah kelas asas?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!