Преоптерећење и прегласавање у Ц # - Како то ради - Примери и предности

Преглед садржаја:

Anonim

Увод у преоптерећење и прегласавање у Ц #

Полиморфизам је један од важних концепата у Ц #. Постоје две врсте полиморфизма, време састављања и време рада. Концепт преоптерећења и прегласавања користе се за постизање тога. Код прегласавања, дечија класа може имплементирати методу надређене класе на другачији начин, али метода надређене класе има исто име и исти потпис методе као родитељ док у преоптерећењу постоји више метода у класи са истим именом и различитим параметрима.

Како прегласавање и преоптерећење делује у Ц #?

Рад надјачања и преоптерећења у Ц # су објашњени доље са примерима:

Превладавајући

Постоје неке кључне речи које користимо у превладавању, попут виртуелног, надменог и базног.

Синтакса:

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

У овом случају користе се кључне речи виртуелне и надмено, што значи да је основна класа виртуелна, а дечија класа може да примењује ову класу, а надјачи значи да ова дечија класа има исти назив и исти потпис као родитељска класа.

Пример # 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();
)
)
)

У горњем примеру, назив метода је исти, али је њихова примена различита. Основна класа има виртуелну и захваљујући тој дечијој класи може имплементирати методу родитељске класе на свој начин. Метода дечије класе има прегласавање кључне речи што показује да је ова метода метода замене.

Излаз:

Пример бр. 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();
)
)
)

Излаз:

У овом примеру, изведена класа има основну кључну реч која се користи за позивање методе основне класе. Дакле, у том се случају изведена метода назива методом основне класе.

Поени за памћење:

  • У превладавајућем концепту, име методе и модификатор потписа и приступа увек је исто као и родитељска и подређена класа.
  • Метода родитељске класе не може бити статична.

Преоптерећење

Код преоптерећења постоји више метода са различитим потписом метода. Испод је неколико примера који показују како можемо постићи преоптерећење варирајући број параметара, редослед параметара и врсте података.

Пример # 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();
)
)
)

У горњем примјеру постоје двије методе са истим називом, али различитим бројем параметара. Прва метода се састоји од два параметра, док друга има три параметра. То се назива преоптерећењем метода.

Излаз:

Пример бр. 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();
)
)
)

У горњем примјеру постоје двије методе са истим именом, али њихове врсте података су различите. Прва метода има цео тип података, док друга има двоструки тип података. У овом случају параметри су различити због различитог типа података.

Излаз:

Пример # 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();
)
)
)

У горњем примеру, назив метода је исти, али редослед параметара је различит. Први метод има име и сопствени ид. док други има ид односно име.

Излаз:

Поени за памћење:

  • У концепту преоптерећења није могуће дефинисати више метода са истим параметрима у случају реда, врсте и броја.
  • Није могуће преоптеретити методу засновану на различитим типовима повратка.

Предности преоптерећења и прегласавања у Ц #

  • Преоптерећење је један од начина за постизање статичког, а прегласавање је један од начина на који Ц # постиже динамички полиморфизам.
  • Кориснику пружа флексибилност и чистоћу.

Закључак

Преоптерећење и прегласавање играју главну улогу у постизању полиморфизма. Прекорачење омогућава изведеној класи да се имплементира на свој начин, а са друге стране преоптерећење се односи на методе истог назива и разне врсте имплементација параметара.

Препоручени чланци

Ово је водич за преоптерећење и прегласавање у Ц #. Овде смо расправљали о раду, синтакси, предностима преоптерећења и прегласавања у Ц # са примерима и имплементацијом кода. Такође можете погледати следеће чланке да бисте сазнали више -

  1. Објекти у Ц #
  2. 2Д низови у Ц #
  3. Превладавање у Ц #
  4. Замјена у Ц #
  5. Полиморфизам у Јави
  6. 2Д графика на Јави
  7. 3 различите врсте поља у ПХП-у (примери)