Въведение в претоварването и отменянето в C #

Полиморфизмът е едно от важните понятия в C #. Има два вида полиморфизъм, време за съставяне и време за изпълнение. За постигането на това се използват съответно концепции за претоварване и преодоляване. При презареждане, клас на дете може да приложи метода на родителския клас по различен начин, но методът на клас на дете има същото име и същия подпис на метод като родител, докато при претоварване има няколко метода в клас със същото име и различни параметри.

Как преумора и претоварване работи в C #?

Работата на презаписването и претоварването в C # са обяснени по-долу с примери:

Замяната

Има някои ключови думи, които използваме в преодоляване като виртуални, преодоляване и база.

Синтаксис:

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

В горния пример името на методите е едно и също, но редът на параметрите е различен. Първият метод има име и респ. като има предвид, че вторият има съответно идентификатор и име.

изход:

Точки за запомняне:

  • В концепция за претоварване не е възможно да се дефинират повече от един метод със същите параметри в случай на ред, вид и номер.
  • Не е възможно да се претоварва метод, базиран на различните видове връщане.

Предимства на претоварването и преодоляването в C #

  • Претоварването е един от начините за постигане на статично, а преодоляването е един от начините, по които C # постига динамичен полиморфизъм.
  • Той осигурява гъвкавост на потребителя и чистота на кода.

заключение

Претоварването и преодоляването играят основна роля за постигането на полиморфизъм. Overriding позволява на производен клас да се реализира по свой начин, а от друга страна претоварването е свързано с методи със същото име и различни видове реализации на параметри.

Препоръчителни статии

Това е ръководство за претоварване и презаписване в C #. Тук обсъждаме работата, синтаксиса, предимствата на претоварването и преодоляването в C # с примери и реализация на код. Можете също да разгледате следните статии, за да научите повече -

  1. Обекти в C #
  2. 2D масиви в C #
  3. Повишаване в C #
  4. Размяна в C #
  5. Полиморфизъм в Java
  6. 2D графика в Java
  7. 3 различни вида масиви в PHP (примери)