Uvod v preobremenitev in preglasitev v C #

Polimorfizem je eden pomembnih konceptov v C #. Obstajata dve vrsti polimorfizma, čas sestavljanja in čas teka. Za dosego tega cilja se uporabljajo koncepti preobremenitve in preobremenitve. Pri preglasitvi lahko nadrejeni razred izvede metodo nadrejenega razreda na drugačen način, vendar ima metoda nadrejenega razreda isto ime in isti podpis metode kot nadrejeni, medtem ko je pri preobremenitvi več metod v razredu z istim imenom in različnimi parametri.

Kako pretiravanje in preobremenitev delujeta v C #?

Delovanje preglasitve in preobremenitve v C # je razloženo spodaj s primeri:

Prevladujoče

Obstaja nekaj ključnih besed, ki jih uporabljamo pri presežku, na primer virtualni, preglasni in osnovni.

Sintaksa:

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

Pri tem se uporabljajo navidezne in preglasne ključne besede, kar pomeni, da je osnovni razred virtualni, otroški razred pa lahko izvaja ta razred, preglasitev pa pomeni, da ima ta nadrejeni razred isto ime in isti podpis kot nadrejeni razred.

Primer 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();
)
)
)

V zgornjem primeru je ime metod isto, vendar je njihovo izvajanje drugačno. Osnovni razred ima virtualni, zato lahko ta razred na svoj način implementira metodo nadrejenega razreda. Metoda nadrejenega razreda ima preglas ključne besede, kar kaže, da je ta metoda metoda preglasitve.

Izhod:

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

Izhod:

V tem primeru ima izpeljani razred osnovno ključno besedo, ki se uporablja za klic metode osnovnega razreda. V tem primeru se izvedena metoda imenuje po metodi osnovnega razreda.

Točke za spomin:

  • V prevladujočem konceptu je ime metode in modifikatorja podpisa in dostopa vedno enako razredu staršev in otrok.
  • Metoda nadrejenega razreda ne more biti statična.

Preobremenitev

Pri preobremenitvi obstaja več metod z različnim podpisom metod. Spodaj je nekaj primerov, ki prikazujejo, kako lahko dosežemo preobremenitev s spreminjanjem števila parametrov, vrstnega reda parametrov in podatkovnih vrst parametrov.

Primer 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();
)
)
)

V zgornjem primeru obstajata dve metodi z istim imenom, vendar različnim številom parametrov. Prva metoda je sestavljena iz dveh parametrov, druga pa tri parametre. Temu rečemo metoda preobremenitve.

Izhod:

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

V zgornjem primeru obstajata dve metodi z istim imenom, vendar sta njuni vrsti podatkov različni. Prva metoda ima celo vrsto podatkov, druga pa dvojno vrsto podatkov. V tem primeru so parametri različni zaradi različnih vrst podatkov.

Izhod:

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

V zgornjem primeru je ime metod enako, vendar je vrstni red parametrov drugačen. Prva metoda ima ime in id resp. medtem ko ima drugi ime id in ime.

Izhod:

Točke za spomin:

  • V konceptu preobremenitve ni mogoče določiti več kot ene metode z enakimi parametri v primeru vrstnega reda, vrste in številke.
  • Metode, ki temelji na različnih vrstah vračanja, ni mogoče preobremeniti.

Prednosti preobremenitve in preglasitve v C #

  • Preobremenjenost je eden od načinov za dosego statičnosti, prenapetost pa je eden od načinov, s katerim C # doseže dinamični polimorfizem.
  • Uporabniku omogoča prilagodljivost in čistost kode.

Zaključek

Preobremenjenost in preobremenjenost igrata pomembno vlogo pri doseganju polimorfizma. Prevladovanje omogoča izpeljanemu razredu, da se sam izvaja, na drugi strani pa je preobremenitev približno enakih metod z različnimi imeni in različnimi izvedbami parametrov.

Priporočeni članki

To je priročnik za preobremenitev in preglasitev v C #. Tukaj razpravljamo o delu, sintaksi, prednostih preobremenitve in preglasitve v C # s primeri in implementacijo kode. Če želite izvedeti več, si oglejte tudi naslednje članke -

  1. Predmeti v C #
  2. 2D matrike v C #
  3. Prevlado v C #
  4. Zamenjava v C #
  5. Polimorfizem na Javi
  6. 2D grafika na Javi
  7. 3 različne vrste nizov v PHP (primeri)