Úvod do přetížení a potlačení v C #

Polymorfismus je jedním z důležitých konceptů v C #. Existují dva typy polymorfismu, doba kompilace a doba běhu. K dosažení tohoto cíle se používají koncepce přetížení a překonání. Při přepisování může podřízená třída implementovat metodu nadřazené třídy jiným způsobem, ale metoda podřízené třídy má stejný název a stejný podpis metody jako nadřazený, zatímco v přetížení existuje více metod ve třídě se stejným názvem a různými parametry.

Jak převažování a přetížení funguje v C #?

Dále je vysvětleno fungování převažování a přetížení v C # s příklady:

Převažující

Existují některá klíčová slova, která používáme při přepisování, jako je virtuální, přepis a základna.

Syntax:

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 se používají virtuální a přepisovací klíčová slova, což znamená, že základní třída je virtuální a podřízená třída může tuto třídu implementovat a přepis znamená, že tato podřízená třída má stejný název a stejný podpis metody jako nadřazená třída.

Pří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();
)
)
)

Ve výše uvedeném příkladu je název metod stejný, ale jejich implementace je jiná. Základní třída má virtuální a díky této podřízené třídě může implementovat metodu nadřazené třídy svým vlastním způsobem. Metoda podřízené třídy má přepsání klíčových slov, které ukazuje, že tato metoda je přepisovací metodou.

Výstup:

Pří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ýstup:

V tomto příkladu má odvozená třída základní klíčové slovo, které se používá k vyvolání metody základní třídy. V takovém případě se odvozená metoda volá po metodě základní třídy.

Body k zapamatování:

  • V převažujícím konceptu je název metody a metody podpisu a modifikátoru přístupu vždy stejný jako u nadřazené a podřízené třídy.
  • Metoda nadřazené třídy nemůže být statická.

Přetížení

Při přetížení existuje několik metod s různým podpisem metody. Níže uvádíme několik příkladů, které ukazují, jak můžeme dosáhnout přetížení změnou počtu parametrů, pořadí parametrů a datových typů parametrů.

Pří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();
)
)
)

Ve výše uvedeném příkladu existují dvě metody se stejným názvem, ale odlišným počtem parametrů. První metoda se skládá ze dvou parametrů, zatímco druhá metoda má tři parametry. Tomu se říká přetížení metody.

Výstup:

Pří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();
)
)
)

Ve výše uvedeném příkladu existují dvě metody se stejným názvem, ale jejich datové typy se liší. První metoda má celočíselný datový typ, zatímco druhá má dvojitý datový typ. V tomto případě se tedy parametry liší z důvodu odlišného datového typu.

Výstup:

Pří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();
)
)
)

Ve výše uvedeném příkladu jsou názvy metod stejné, ale pořadí parametrů se liší. První metoda má jméno a id resp. zatímco druhý má id a jméno.

Výstup:

Body k zapamatování:

  • V konceptu přetížení není možné definovat více než jednu metodu se stejnými parametry v případě pořadí, typu a čísla.
  • Není možné přetížit metodu založenou na různých typech návratu.

Výhody přetížení a přetažení v C #

  • Přetížení je jedním ze způsobů, jak dosáhnout statického a překonání, je jedním ze způsobů, jak C # dosahuje dynamického polymorfismu.
  • Poskytuje uživateli flexibilitu a čistotu kódu.

Závěr

Přetěžování a převahy hrají hlavní roli při dosahování polymorfismu. Přepisování umožňuje odvozené třídě implementovat vlastním způsobem a na druhé straně přetížení se týká metod se stejným názvem a různých typů implementací parametrů.

Doporučené články

Toto je průvodce přetížením a přepsáním v C #. Zde diskutujeme práci, syntaxi, výhody přetížení a přepsání v C # s příklady a implementací kódu. Další informace naleznete také v následujících článcích -

  1. Objekty v C #
  2. 2D pole v C #
  3. Převažující v C #
  4. Výměna v C #
  5. Polymorfismus v Javě
  6. 2D grafika v Javě
  7. 3 různé typy polí v PHP (příklady)

Kategorie: