Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Kata Kunci Maya dalam C# 

Kata Kunci Maya dalam C# 

WBOY
WBOYasal
2024-09-03 15:26:38887semak imbas

Apakah kata kunci maya? Sebelum melompat terus ke dalam perspektif C#, adalah penting untuk memahami atau menyemak semula konsep pewarisan, overriding dan kata kunci maya dalam dunia pengaturcaraan berorientasikan objek.

Penggantian Kaedah ialah konsep OOP yang disatukan rapat dengan Warisan. Apabila kaedah kelas kanak-kanak mengatasi kaedah kelas induk dengan nama, parameter dan jenis pulangan yang sama, ia dipanggil sebagai kaedah mengatasi. Kata kunci maya ialah petunjuk kepada pengkompil bahawa kaedah mungkin ditindih dalam kelas terbitan.

Datang kepada perspektif C#, kata kunci maya digunakan untuk mengubah suai pengisytiharan mana-mana harta, kaedah atau peristiwa untuk membenarkan penetapan dalam kelas terbitan. Secara ringkas, kata kunci maya melaksanakan konsep mengatasi kaedah dalam C#.

Sintaks

Sebarang sifat, kaedah atau peristiwa boleh ditindih dengan menambahkan kata kunci maya dalam kelas asas dan mengatasi kata kunci dalam kelas terbitan.

Tambah kata kunci maya dalam perisytiharan kelas asas:

public class Base {
public virtual int abc { get; set; } // this property can be overridden
public virtual void Xyz() { }         // this method can be overridden
}

Tambah kata kunci ganti dalam pengisytiharan kelas asas:

public class Derived : Base {
public override int abc { get; set; } // this overrides the base class property
public override void Xyz() { }        // this overrides the base class method
}

Bagaimana Maya Berfungsi dalam C#?

Perbezaan asas antara beban lampau dan overriding ialah mekanisme masa kompilasi, manakala mekanisme masa kompilasi digunakan pada masa tayangan. Kata kunci maya mula bertindak pada masa jalan, sekali gus melaksanakan konsep mengatasi kaedah.

Apabila mana-mana kaedah atau harta maya digunakan atau diakses, pengkompil menyemak ahli mengatasi kaedah atau harta tersebut. Jika satu dijumpai, ia dipanggil. Jika tiada yang ditemui, kaedah atau sifat asal akan digunakan.

Persoalan yang sangat baik di sini timbul – apakah yang berlaku dalam kes pewarisan berbilang peringkat? Nah, jika mana-mana ahli kelas diganti dalam lebih daripada satu peringkat, ahli ganti terdalam akan dipanggil (yang dalam kelas terbitan paling banyak).

Contoh

Contoh Kata Kunci Maya berikut dalam C#  disebut di bawah

Warisan Peringkat Tunggal

Mari kita ambil contoh untuk memahami cara kerja kata kunci maya apabila kelas anak tunggal mewarisi kelas induk iaitu tiada warisan berbilang peringkat.

Kod:

using System;
public class Polynomial
{
public virtual double len
{
get;
set;
}
public virtual double wid
{
get;
set;
}
public virtual double Area()
{
return len * wid;
}
}
public class Rectangle: Polynomial
{
}
public class Square : Polynomial
{
public override double len
{
get;
set;
}
public override double Area()
{
return len * len;
}
}
public class Circle : Polynomial
{
public double radius
{
get;
set;
}
public override double Area()
{
return Math.PI * radius * radius;
}
}
public class Triangle : Polynomial
{
public override double Area()
{
return 0.5 * len * wid;
}
}
public class Program
{
public static void Main()
{
var rect = new Rectangle();
rect.len = 5;
rect.wid = 10;
Console.WriteLine("Area of Rectangle = " + rect.Area());
var sq = new Square();
sq.len = 15;
Console.WriteLine("Area of Square = " + sq.Area());
var cir = new Circle();
cir.radius = 10;
Console.WriteLine("Area of Circle = " + cir.Area());
var tri = new Triangle();
tri.len = 5;
tri.wid = 10;
Console.WriteLine("Area of Triangle = " + tri.Area());
}
}

Output:

Kata Kunci Maya dalam C# 

Bagaimana Kod Di Atas Berfungsi?

Dalam polinomial kelas asas, kami telah mengisytiharkan dua sifat dan satu kaedah sebagai maya. Ini kini boleh ditindih dalam kelas kanak-kanak. Kini kami mencipta pelbagai kelas kanak-kanak pelbagai bentuk yang mewarisi kelas Polinomial.

Dalam kelas Rectangle, kita tidak perlu mengatasi sebarang sifat atau kaedah. Pelaksanaan kelas asas akan berfungsi sebagaimana adanya untuk kelas Rectangle.

Dalam kelas Square, kami tidak mempunyai sifat lebar. Jadi kami mengatasi sifat panjang dan kaedah Luas untuk mengembalikan kuasa dua panjang.

Dalam kelas Bulatan, kami tidak mempunyai panjang atau lebar. Jadi, kami mengisytiharkan sifat jejari khusus kelas baharu dan mengatasi kaedah Kawasan dengan sewajarnya.

Dalam kelas Segitiga, kami hanya mengatasi kaedah Kawasan dan sifat diwarisi daripada Polinomial kelas asas.

Apabila kami mencipta objek kelas terbitan, pengkompil menemui kata kunci maya semasa pembinaan kelas asas dan dengan itu mencari ahli yang diganti. Ahli yang diganti kemudiannya dipanggil dengan sewajarnya.

Warisan Berbilang Peringkat

Mari kita ubah suai contoh di atas untuk memasukkan warisan berbilang peringkat.

Kod:

using System;
public class Polynomial
{
public virtual double len {       get; set; }
public virtual double wid {       get; set; }
public virtual double Area()
{ return 0; }
}
public class Rectangle : Polynomial
{
public override double Area()
{ return len * wid; }
}
public class Square : Rectangle
{
public override double len { get; set; }
public override double Area()
{ return len * len; }
}
public class Program
{
public static void Main()
{
var rect = new Rectangle();
rect.len = 5;
rect.wid = 10;
Console.WriteLine("Area of Rectangle = " + rect.Area());
var sq = new Square();
sq.len = 15;
Console.WriteLine("Area of Square = " + sq.Area());
}
}

Output:

Kata Kunci Maya dalam C# 

Kelebihan

Ahli maya mempunyai pengisytiharan dan takrifan dalam kedua-dua kelas asas dan kelas terbitan. Ahli maya berfaedah apabila beberapa fungsi tambahan diperlukan dalam kelas terbitan. Ia berfungsi sebagai alat tambah.

Peraturan

  • Sesuatu pembolehubah tidak boleh diisytiharkan maya. Hanya sifat, kaedah dan acara boleh diisytiharkan sebagai maya.
  • Ahli statik tidak boleh diisytiharkan maya.
  • Ahli abstrak tidak boleh diisytiharkan secara maya.
  • Ahli peribadi tidak boleh diisytiharkan maya.
  • Ahli bukan maya tidak boleh ditindih.
  • Tahap akses, jenis dan nama kedua-dua ahli maya dan ahli utama mestilah sama. Contohnya, jika kaedah maya adalah awam, kaedah mengatasi mesti juga terbuka.

Kesimpulan

Dalam artikel ini, kami memahami konsep maya dalam C#. Kami melihat cara C# melaksanakan kata kunci maya semasa masa jalan dan melihat contoh.

Ahli maya ialah konsep pengaturcaraan berorientasikan objek yang hebat. Walau bagaimanapun, untuk mendapatkan pengetahuan yang mendalam, adalah sangat disyorkan untuk mempelajari tentang kata kunci abstrak, antara muka dan kata kunci baharu. Ini akan sangat membantu dalam memahami perbezaan antara mereka semua. Ini membantu dalam menyedari bila hendak menggunakan dan bila tidak menggunakan maya.

Atas ialah kandungan terperinci Kata Kunci Maya dalam 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
Artikel sebelumnya:C# Panggilan Dengan RujukanArtikel seterusnya:C# Panggilan Dengan Rujukan