Rumah >pembangunan bahagian belakang >Tutorial C#.Net >Berlebihan dan Mengatasi dalam C#

Berlebihan dan Mengatasi dalam C#

WBOY
WBOYasal
2024-09-03 15:13:14851semak imbas

Polymorphism ialah salah satu konsep penting dalam C#. Terdapat dua jenis polimorfisme, masa penyusunan dan masa larian. Konsep Overloading dan Overriding digunakan untuk mencapai ini masing-masing. Dalam mengatasi, kelas kanak-kanak boleh melaksanakan kaedah kelas induk dengan cara yang berbeza tetapi kaedah kelas kanak-kanak mempunyai nama yang sama dan tandatangan kaedah yang sama seperti induk manakala dalam beban lampau terdapat berbilang kaedah dalam kelas dengan nama yang sama dan parameter yang berbeza.

Bagaimana Overriding dan Overloading Berfungsi dalam C#?

Kerja mengatasi dan melebihkan dalam C# diterangkan di bawah dengan contoh:

Mengatasi

Terdapat beberapa kata kunci yang kami gunakan untuk menggantikan seperti maya, menimpa dan asas.

Sintaks:

class Parent
{
public virtual void Example() // base class
{
Console.WriteLine("parent class");
}
}
class Child: Parent
{
public override void Example() // derived class
{
base.Example();
Console.WriteLine("Child class");
}
}

Dalam hal ini, kata kunci maya dan override digunakan yang bermaksud kelas asas adalah maya dan kelas anak boleh melaksanakan kelas ini dan override bermakna kelas anak ini mempunyai nama yang sama dan tandatangan kaedah yang sama seperti kelas induk.

Contoh #1
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace OverridingExample
{
class Subject           // base class
{
public virtual void study()              // base class method
{
Console.WriteLine("Study all the subjects");
}
}
class Mathematics: Subject      //  derived class
{
public override void study()        // derived class method
{
Console.WriteLine("Study Mathematics");
}
}
class Program
{
// main method
static void Main(string[] args)
{
Subject s = new Mathematics();
s.study();
Console.ReadLine();
}
}
}

Dalam contoh di atas, nama kaedah adalah sama tetapi pelaksanaannya berbeza. Kelas asas mempunyai maya dan kerana kelas kanak-kanak itu boleh melaksanakan kaedah kelas induk dengan caranya sendiri. Kaedah kelas kanak-kanak mempunyai penggantian kata kunci yang menunjukkan bahawa kaedah ini ialah kaedah penggantian.

Output:

Berlebihan dan Mengatasi dalam C#

Contoh #2
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace OverridingExample
{
class Subject             // base class
{
public virtual void study()              // base class method
{
Console.WriteLine("Study all the subjects");
}
}
class Mathematics: Subject      //  derived class
{
public override void study()        // derived class method
{
base.study();
Console.WriteLine("Study Mathematics");
}
}
class Program
{
// main method
static void Main(string[] args)
{
Mathematics m = new Mathematics();
m.study();
Console.ReadLine();
}
}
}

Output:

Berlebihan dan Mengatasi dalam C#

Dalam contoh ini, kelas terbitan mempunyai kata kunci asas yang digunakan untuk memanggil kaedah kelas asas. Jadi, dalam kes itu, kaedah terbitan dipanggil selepas kaedah kelas asas.

Perkara yang Perlu Diingati:

  • Dalam konsep utama, nama kaedah dan tandatangan kaedah serta pengubah suai akses sentiasa sama dengan kelas induk dan anak.
  • Kaedah kelas induk tidak boleh statik.

Melebihi muatan

Dalam lebihan muatan, terdapat pelbagai kaedah dengan tandatangan kaedah yang berbeza. Di bawah ialah beberapa contoh yang menunjukkan cara kita boleh mencapai lebihan beban dengan mengubah bilangan parameter, susunan parameter dan jenis data parameter.

Contoh #1
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace OverloadingExample
{
class Demo
{
public int Sum(int x, int y)
{
int value = x + y;
return value;
}
public int Sum(int x, int y, int z)
{
int value = x + y + z;
return value;
}
public static void Main(string[] args) // main method
{
Demo d = new Demo();
int sum1 = d.Sum(24, 28);
Console.WriteLine("sum of the two "
+ "integer value : " + sum1);
int sum2 = d.Sum(10, 20, 30);
Console.WriteLine("sum of the three "
+ "integer value : " + sum2);
Console.ReadLine();
}
}
}

Dalam contoh di atas, terdapat dua kaedah dengan nama yang sama tetapi bilangan parameter yang berbeza.  Kaedah pertama terdiri daripada dua parameter manakala kaedah kedua mempunyai tiga parameter. Ini dipanggil kaedah terlebih beban.

Output:

Berlebihan dan Mengatasi dalam C#

Contoh #2
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace OverloadingExample
{
class Demo
{
public int Sum(int x, int y, int z)
{
int value = x + y + z;
return value;
}
public double Sum(double x, double y, double z)
{
double value = x + y + z;
return value;
}
public static void Main(string[] args) // main method
{
Demo d = new Demo();
int sum1 = d.Sum(24, 28,7);
Console.WriteLine("sum of the two "
+ "integer value : " + sum1);
double sum2 = d.Sum(10.0, 20.0, 30.0);
Console.WriteLine("sum of the three "
+ "integer value : " + sum2);
Console.ReadLine();
}
}
}

Dalam contoh di atas, terdapat dua kaedah dengan nama yang sama tetapi jenis datanya berbeza. Kaedah pertama mempunyai jenis data integer manakala kaedah kedua mempunyai jenis data berganda. Jadi dalam kes ini parameter berbeza-beza kerana jenis data yang berbeza.

Output:

Berlebihan dan Mengatasi dalam C#

Contoh #3
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace OverloadingExample
{
class Demo
{
public void Details(String name,int id)
{
Console.WriteLine("Name " + name + ", "
+ "Id " + id); ;
}
public void Details(int id,string name)
{
Console.WriteLine("Name " + name + ", "
+ "Id " + id);
}
public static void Main(string[] args) // main method
{
Demo d = new Demo();
d.Details("John", 10);
d.Details("Joe", 20);
Console.ReadLine();
}
}
}

Dalam contoh di atas, nama kaedah adalah sama tetapi susunan parameter adalah berbeza. Kaedah pertama mempunyai nama dan id resp. manakala yang kedua mempunyai id dan nama masing-masing.

Output:

Berlebihan dan Mengatasi dalam C#

Perkara yang Perlu Diingati:

  • Dalam konsep terlebih muatan, tidak mungkin untuk mentakrifkan lebih daripada satu kaedah dengan parameter yang sama dalam kes tertib, jenis dan nombor.
  • Tidak mungkin untuk membebankan kaedah berdasarkan jenis pulangan yang berbeza.

Kelebihan Melebihi muatan dan Mengatasi dalam C#

Berikut adalah kelebihan yang dijelaskan.

  • Pemuatan berlebihan ialah salah satu cara untuk mencapai statik dan mengatasi adalah salah satu cara C# mencapai polimorfisme Dinamik.
  • Ia memberikan fleksibiliti kepada pengguna dan kebersihan kod.

Kesimpulan

Lebih muatan dan mengatasi memainkan peranan utama dalam mencapai polimorfisme. Overriding membolehkan kelas terbitan dilaksanakan dengan caranya sendiri dan sebaliknya lebihan beban adalah mengenai kaedah dengan nama yang sama dan pelbagai jenis pelaksanaan parameter.

Atas ialah kandungan terperinci Berlebihan dan Mengatasi 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:Pemusnah dalam C#Artikel seterusnya:Pemusnah dalam C#