Úvod do preťaženia a prekonania v C #

Polymorfizmus je jedným z dôležitých konceptov v C #. Existujú dva typy polymorfizmu, čas zostavenia a čas spustenia. Na dosiahnutie tohto cieľa sa používajú koncepty preťaženia a prekonania. Pri potlačení môže podradená trieda implementovať metódu rodičovskej triedy odlišným spôsobom, ale metóda podradenej triedy má rovnaký názov a rovnaký podpis metódy ako rodič, zatiaľ čo pri preťažení existuje v triede viacero metód s rovnakým menom a rôznymi parametrami.

Ako funguje Overriding a overloading v C #?

Práca nadradenia a preťaženia v C # je vysvetlená nižšie s príkladmi:

prvoradý

Existujú niektoré kľúčové slová, ktoré používame pri potlačovaní, napríklad virtuálne, prepísané a základné.

syntaxe:

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

V tomto sa používajú virtuálne a prepísané kľúčové slová, čo znamená, že základná trieda je virtuálna a podradená trieda môže implementovať túto triedu a prepísanie znamená, že táto podradená trieda má rovnaký názov a rovnaký spôsob podpisu ako nadradená trieda.

Príklad č. 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 uvedenom príklade je názov metód rovnaký, ale ich implementácia je iná. Základná trieda je virtuálna a vďaka tejto podradenej triede môže implementovať metódu rodičovskej triedy svojím vlastným spôsobom. Metóda podriadenej triedy má prepísanie kľúčových slov, ktoré ukazuje, že táto metóda je prepísanou metódou.

Výkon:

Príklad č. 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();
)
)
)

Výkon:

V tomto príklade má odvodená trieda základné kľúčové slovo, ktoré sa používa na volanie metódy základnej triedy. V takom prípade sa odvodená metóda volá po metóde základnej triedy.

Body na zapamätanie:

  • V prevažujúcej koncepcii je názov metódy a metódy podpisu a modifikátora prístupu vždy rovnaký ako rodičovská a podradená trieda.
  • Metóda rodičovskej triedy nemôže byť statická.

preťaženie

Pri preťažení existuje niekoľko metód s rôznym podpisom metódy. Nižšie uvádzame niekoľko príkladov, ktoré ukazujú, ako môžeme dosiahnuť preťaženie zmenou počtu parametrov, poradia parametrov a dátových typov parametrov.

Príklad č. 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();
)
)
)

Vo vyššie uvedenom príklade existujú dve metódy s rovnakým názvom, ale s odlišným počtom parametrov. Prvá metóda sa skladá z dvoch parametrov, zatiaľ čo druhá metóda má tri parametre. Toto sa nazýva preťaženie metódou.

Výkon:

Príklad č. 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();
)
)
)

Vo vyššie uvedenom príklade existujú dve metódy s rovnakým názvom, ale ich dátové typy sa líšia. Prvá metóda má celočíselný typ údajov, zatiaľ čo druhá metóda má dvojitý dátový typ. V tomto prípade sa preto parametre líšia z dôvodu rôznych typov údajov.

Výkon:

Príklad č. 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();
)
)
)

Vo vyššie uvedenom príklade sú názvy metód rovnaké, ale poradie parametrov sa líši. Prvá metóda má meno a id resp. zatiaľ čo druhý má ID a meno.

Výkon:

Body na zapamätanie:

  • V koncepte preťaženia nie je možné definovať viac ako jednu metódu s rovnakými parametrami v prípade poradia, typu a čísla.
  • Nie je možné preťažiť metódu založenú na rôznych typoch návratov.

Výhody preťaženia a zmeny v C #

  • Preťaženie je jedným zo spôsobov, ako dosiahnuť statický náboj, a jedným z spôsobov, ktorým C # dosahuje dynamický polymorfizmus.
  • Poskytuje používateľovi flexibilitu a čistotu kódu.

záver

Preťaženie a prevládanie hrajú hlavnú úlohu pri dosahovaní polymorfizmu. Prepísanie umožňuje odvodenú triedu implementovať vlastným spôsobom a na druhej strane preťaženie je o metódach s rovnakým názvom a rôznymi typmi implementácií parametrov.

Odporúčané články

Toto je sprievodca preťažením a potlačením v C #. Tu diskutujeme prácu, syntax, výhody preťaženia a zmeny v C # s príkladmi a implementáciou kódu. Ďalšie informácie nájdete aj v nasledujúcich článkoch -

  1. Objekty v C #
  2. 2D polia v C #
  3. Prečíslenie v C #
  4. Výmena v C #
  5. Polymorfizmus v Jave
  6. 2D grafika v Jave
  7. 3 rôzne typy polí v PHP (príklady)

Kategórie: