Introducere în supraîncărcare și supraîncărcare în C #

Polimorfismul este unul dintre conceptele importante din C #. Există două tipuri de polimorfism, compila timpul și timpul de rulare. Conceptele de supraîncărcare și de supraîncărcare sunt utilizate pentru a realiza acest lucru respectiv. În suprasolicitare, o clasă copil poate implementa metoda clasei părinte într-un mod diferit, dar metoda clasei copil are același nume și aceeași metodă semnătura ca părinte, în timp ce la supraîncărcare există mai multe metode într-o clasă cu același nume și parametri diferiți.

Cum funcționează supraîncărcarea și supraîncărcarea în C #?

Modul de supraîncărcare și supraîncărcare în C # sunt explicate mai jos cu exemple:

Supracomandarea

Există câteva cuvinte cheie pe care le utilizăm pentru a trece peste ca virtual, override și base.

Sintaxă:

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”);
)
)

În acest sens, se folosesc cuvinte cheie virtuale și înlocuire, ceea ce înseamnă că clasa de bază este virtuală și clasa copil poate implementa această clasă și anulare înseamnă că această clasă copil are același nume și aceeași metodă semnătură ca și clasa părinte.

Exemplul # 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();
)
)
)

În exemplul de mai sus, numele metodelor este același, dar implementarea lor este diferită. Clasa de bază are virtual și datorită acelei clase de copii poate implementa metoda clasei părinte în felul său. Metoda clasei copil are o înlocuire a cuvintelor cheie care arată că această metodă este o metodă de înlocuire.

ieşire:

Exemplul # 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();
)
)
)

ieşire:

În acest exemplu, clasa derivată are un cuvânt cheie de bază, care este utilizat pentru a numi metoda clasei de bază. Deci, în acest caz, metoda derivată este numită după metoda clasei de bază.

Puncte de reținut:

  • În conceptul imperativ, denumirea metodei și a metodei și a modificatorului de acces al metodei este întotdeauna aceeași cu clasa de părinți și copii.
  • Metoda clasei părinte nu poate fi statică.

supraîncărcarea

La supraîncărcare, există mai multe metode cu semnătura diferită a metodei. Mai jos sunt câteva exemple care arată cum putem realiza supraîncărcarea prin modificarea numărului de parametri, ordinea parametrilor și tipurile de date ale parametrilor.

Exemplul # 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();
)
)
)

În exemplul de mai sus, există două metode cu același nume, dar un număr diferit de parametri. Prima metodă constă din doi parametri, în timp ce a doua are trei parametri. Aceasta se numește metoda supraîncărcare.

ieşire:

Exemplul # 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();
)
)
)

În exemplul de mai sus, există două metode cu același nume, dar tipurile lor de date sunt diferite. Prima metodă are un tip de date întreg, în timp ce a doua are un tip dublu de date. Deci, în acest caz, parametrii diferă din cauza tipului de date diferit.

ieşire:

Exemplul # 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();
)
)
)

În exemplul de mai sus, numele metodelor este aceeași, dar ordinea parametrilor este diferită. Prima metodă are un nume și un id. în timp ce al doilea are respectiv id și nume.

ieşire:

Puncte de reținut:

  • Într-un concept de suprasarcină, nu este posibilă definirea mai multor metode cu aceiași parametri în cazul comenzii, tipului și numărului.
  • Nu este posibilă supraîncărcarea unei metode pe baza diferitelor tipuri de retur.

Avantajele supraîncărcării și supraîncărcării în C #

  • Supraîncărcarea este una dintre modalitățile de realizare statică și supraîncărcare este una dintre modalitățile prin care C # realizează un polimorfism dinamic.
  • Oferă flexibilitate utilizatorului și curățenie a codului.

Concluzie

Supraîncărcarea și suprasolicitarea joacă un rol major în realizarea polimorfismului. Suprasolicitarea permite implementării clasei derivate în felul său și, pe de altă parte, supraîncărcarea înseamnă metode cu același nume și diferite tipuri de implementări de parametri.

Articole recomandate

Acesta este un ghid pentru supraîncărcare și suprasolicitare în C #. Aici discutăm despre funcționarea, sintaxa, avantajele supraîncărcării și supraîncărcării în C # cu exemple și implementarea codului. De asemenea, puteți consulta următoarele articole pentru a afla mai multe -

  1. Obiecte din C #
  2. Arhiere 2D în C #
  3. Suprafață în C #
  4. Schimbarea în C #
  5. Polimorfism în Java
  6. Grafica 2D în Java
  7. 3 tipuri diferite de Array-uri în PHP (Exemple)