Jadual Kandungan
Bagaimana untuk Menggunakan Overriding dalam C#?
1. Kata Kunci Maya
2. Gantikan Kata Kunci
Kesimpulan

Kaedah Mengatasi dalam C#

Sep 03, 2024 pm 03:13 PM
c# c# tutorial

Penggantian Kaedah ialah operasi berfungsi yang biasa digunakan dalam pengaturcaraan C#, di mana terdapat keperluan untuk mengatasi operasi yang ditakrifkan dalam kelas asas dengan menggunakan kelas terbitan. Untuk penentuan yang berjaya, kaedah ini dijangkakan sebagai kaedah statik, klasifikasi ahli dan pengubah suai capaian hendaklah daripada jenis yang sama dalam kedua-dua kaedah asas dan terbitan, dan overriding hanya boleh digunakan pada kelas terbitan & bukan pada kelas asas. Nama lain yang diberikan untuk mengatasi kaedah ialah polimorfisme masa larian, polimorfisme dinamik dan pengikatan lewat.

Kaedah Mengatasi dalam C#

Bagaimana untuk Menggunakan Overriding dalam C#?

Andaikan, aplikasi kita mempunyai keperluan untuk menukar gelagat kaedah kelas asas dalam kelas terbitan, maka kita harus menggunakan kaedah mengatasi. Untuk mencapai matlamat ini, kita perlu mencipta kaedah dalam kelas terbitan dengan tandatangan yang sama dalam kelas asas untuk melaksanakan tugas yang berbeza.  Sebelum kita belajar cara menggunakan teknik utama, kita perlu ingat perkara di bawah.

  • Dalam pengaturcaraan C#, Penggantian Kaedah juga dipanggil polimorfisme masa Jalankan, Pengikatan Lewat atau Polimorfisme Dinamik.
  • Hanya dalam kelas terbitan kaedah mengatasi boleh dilakukan. Kerana kaedah ditindih dalam kelas terbitan daripada kelas asas.
  • Kaedah itu hendaklah kaedah bukan maya atau statik untuk menimpa.
  • Pengubah suai tahap akses bagi kedua-dua kaedah ganti dan kaedah maya hendaklah sama.

Kaedah yang ditindih oleh pengisytiharan penggantian dipanggil kaedah asas yang ditindih. Ini akan hadir dalam kelas asas. Kaedah asas yang ditindih boleh sama ada abstrak, timpa atau maya. Pelaksanaan baharu dipanggil, kaedah override diwarisi daripada kelas asas ini.

Kami menggunakan kata kunci yang berbeza untuk mengatasi kaedah. Mereka ialah,

1. Kata Kunci Maya

Kami pengkompil menemui kata kunci maya dalam program, ia memahami bahawa kaedah ini boleh ditindih oleh mana-mana kelas terbitannya. Strukturnya seperti di bawah.

public virtual int EnemyHealth()
{
Console.WriteLine("Enemy Health");
}
Salin selepas log masuk

2. Gantikan Kata Kunci

Ini terdapat dalam kelas terbitan. Ia memberitahu pengkompil bahawa kaedah ini mengatasi kaedah dengan nama dan tandatangan yang sama dalam kelas asas.

public override int EnemyHealth ()
{
Console.WriteLine("Enemy 1");
}
Salin selepas log masuk

Contoh

Mula-mula, mari kita lihat contoh tanpa menggunakan kata kunci Maya dan ganti.

Kod:

class Birds
{
public void Color( )
{
Console.WriteLine("Birds will have different Colors");
}
}
class Parrot:Birds
{
public void Color( )
{
Console.WriteLine("Parrot is Green");
}
}
class ExecutionClass
{
public static void Main( )
{
Birds object;
object = new Birds( );
object .Color( );
object = new Parrot( );
object.Color( );
}
}
Salin selepas log masuk

Output:

Kaedah Mengatasi dalam C#

Dalam contoh di atas, kami mencipta objek kelas Terbitan Parrotan dan menyimpan rujukannya dalam objek pembolehubah rujukan daripada jenis Burung.

Dalam langkah seterusnya, menggunakan pembolehubah rujukan objek kami menggunakan fungsi Warna (). Memandangkan objek mengandungi rujukan kepada objek jenis Parrot, adalah wajar kami menjangkakan fungsi Warna () kelas Parrot dilaksanakan. Tetapi kita salah. Keindahan pengaturcaraan tidak akan membenarkannya berlaku.

Kami terkejut, apa yang dilaksanakan ialah kaedah Warna () kelas Burung. Itu kerana fungsi itu digunakan berdasarkan jenis rujukan dan bukan pada perkara yang dirujuk oleh objek pembolehubah rujukan. Memandangkan objek adalah rujukan jenis Burung, fungsi Warna () kelas Burung akan digunakan, tidak kira objek yang dirujuk.

Sekarang mari kita tulis semula program yang sama dengan maya dan timpa Kali ini kita akan pergi langkah demi langkah untuk pemahaman yang lebih baik.

Buat kelas asas dengan sebarang nama. Di sini saya menggunakan Birds. Tulis kaedah dengan kata kunci maya. Ini akan menjadi kaedah ganti kami yang akan kami ganti dalam kelas yang diwarisi. Di dalam kaedah tulis beberapa mesej untuk dicetak dalam konsol.

class Birds
{
public virtual void Color( )
{
Console.WriteLine("Birds will have different Colors");
}
}
Salin selepas log masuk

Sekarang buat satu lagi kelas Parrot Kali ini kita akan mewarisinya daripada kelas asas yang kita buat sebelum ini iaitu Burung. Untuk mewarisi kami menggunakan simbol ‘:’.

kelas Nuri: Burung

Di sini tulis fungsi dengan kata kunci ganti dan tulis beberapa mesej. Pastikan nama kaedah dan tandatangan dalam kelas terbitan sepadan dengan nama kaedah dan tandatangan dalam kelas asas.

public override void Color ( )
{
Console.WriteLine("Parrot is Green");
}
Salin selepas log masuk

Kami memerlukan satu lagi kelas untuk melaksanakan fungsi untuk menyemak penggantian. Buat kelas dengan sebarang nama. Di dalamnya tulis fungsi Utama.

class ExecutionClass
{
public static void Main( )
{
}
}
Salin selepas log masuk

Buat objek kelas induk dan cetuskan fungsi menggunakan objek kelas. Ini akan menggunakan kaedah Warna yang terdapat dalam kelas Burung.

Birds object;
object = new Birds( );
object .Color( );
Salin selepas log masuk

Sekarang cipta objek kelas terbitan dan panggil kaedah Warna. Ini akan menggunakan kaedah Warna kelas Parrot.

object = new Parrot( );
object.Color( );
Salin selepas log masuk

Bolehkah anda meneka output apabila kami menjalankan program? Ini adalah seperti yang ditunjukkan di bawah.

Output:

Kaedah Mengatasi dalam C#

Timpa Kata Kunci dan maya membenarkan untuk menggunakan kelas asas dan kaedah kelas terbitan secara berasingan pada bila-bila masa, walaupun nama kaedah dan tandatangan adalah sama.

Kesimpulan

Dalam artikel ini kami memahami kaedah overriding, keperluan kaedah overriding, contoh dunia sebenar prinsip overriding, cara untuk mencapainya, keperluan menggunakan kata kunci maya dan override dan contoh overriding menggunakan kod . Kita boleh menyimpulkan bahawa mengatasi adalah salah satu ciri berguna dalam polimorfisme yang kita boleh mengubah tingkah laku kaedah kelas asas dalam kelas terbitan.

Atas ialah kandungan terperinci Kaedah Mengatasi dalam C#. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
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

Tag artikel panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Direktori Aktif dengan C# Direktori Aktif dengan C# Sep 03, 2024 pm 03:33 PM

Direktori Aktif dengan C#

Akses Pengubahsuai dalam C# Akses Pengubahsuai dalam C# Sep 03, 2024 pm 03:24 PM

Akses Pengubahsuai dalam C#

Penjana Nombor Rawak dalam C# Penjana Nombor Rawak dalam C# Sep 03, 2024 pm 03:34 PM

Penjana Nombor Rawak dalam C#

Paparan Grid Data C# Paparan Grid Data C# Sep 03, 2024 pm 03:32 PM

Paparan Grid Data C#

C# StringReader C# StringReader Sep 03, 2024 pm 03:23 PM

C# StringReader

Corak dalam C# Corak dalam C# Sep 03, 2024 pm 03:33 PM

Corak dalam C#

C# StringWriter C# StringWriter Sep 03, 2024 pm 03:23 PM

C# StringWriter

BinaryWriter dalam C# BinaryWriter dalam C# Sep 03, 2024 pm 03:22 PM

BinaryWriter dalam C#

See all articles