Introduktion till överbelastning och överbestyrning i C #

Polymorfism är ett av de viktiga begreppen i C #. Det finns två typer av polymorfism, sammanställa tid och körtid. För att uppnå detta respektivt används överbelastningskoncept. I övervägande kan en barnklass implementera föräldraklassmetoden på ett annat sätt, men metod för barnklass har samma namn och samma metodsignatur som förälder medan det i överbelastning finns flera metoder i en klass med samma namn och olika parametrar.

Hur fungerar överbelastning och överbelastning i C #?

Arbetet med att överväga och överbelasta i C # förklaras nedan med exempel:

tvingande

Det finns några nyckelord som vi använder i övervägande som virtuell, åsidosättande och bas.

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

I detta används virtuella och åsidosättande nyckelord vilket innebär att basklassen är virtuell och barnklass kan implementera den här klassen och åsidosätta innebär att denna underklass har samma namn och samma metodsignatur som föräldraklass.

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

I exemplet ovan är metodnamnet detsamma men implementeringen av dem är annorlunda. Basklassen har virtuella och på grund av den barnklassen kan implementera föräldraklass metod på sitt eget sätt. Barnklassmetoden har nyckelordöverskridande som visar att den här metoden är en åsidosättningsmetod.

Produktion:

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

Produktion:

I det här exemplet har den härledda klassen ett basnyckelord som används för att anropa basklassmetoden. Så i så fall kallas den härledda metoden efter basklassmetoden.

Poäng att komma ihåg:

  • I det övergripande konceptet är metodens namn och metodsignatur och åtkomstmodifierare alltid samma som föräldrar och barnklass.
  • Föräldraklassmetoden kan inte vara statisk.

överbelastning

Vid överbelastning finns det flera metoder med olika metodsignaturer. Nedan följer några exempel som visar hur vi kan uppnå överbelastning genom att variera antalet parametrar, parametrarnas storlek och datatyper.

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

I exemplet ovan finns det två metoder med samma namn men ett annat antal parametrar. Den första metoden består av två parametrar medan den andra har tre parametrar. Detta kallas metodöverbelastning.

Produktion:

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

I exemplet ovan finns det två metoder med samma namn men deras datatyper är olika. Den första metoden har en heltal datatyp medan den andra har en dubbel datatyp. Så i detta fall varierar parametrarna på grund av den olika datatypen.

Produktion:

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

I exemplet ovan är metodernas namn detsamma men parametrarna är olika. Den första metoden har ett namn och id resp. medan den andra har id respektive namn.

Produktion:

Poäng att komma ihåg:

  • I ett överbelastningskoncept är det inte möjligt att definiera mer än en metod med samma parametrar i fråga om ordning, typ och antal.
  • Det är inte möjligt att överbelasta en metod baserad på de olika returtyperna.

Fördelar med överbelastning och överbestyrning i C #

  • Överbelastning är ett av sätten att uppnå statisk och åsidosättande är ett av de sätt på vilka C # uppnår dynamisk polymorfism.
  • Det ger användaren flexibilitet och koden är ren.

Slutsats

Överbelastning och överskridande spelar en viktig roll för att uppnå polymorfism. Överskridande tillåter härledd klass att implementera på sitt eget sätt och å andra sidan handlar överbelastning om metoder med samma namn och olika typer av parameterimplementeringar.

Rekommenderade artiklar

Detta är en guide till överbelastning och överbestyrning i C #. Här diskuterar vi arbetet, syntaxen, fördelarna med överbelastning och överskridande i C # med exempel och kodimplementering. Du kan också titta på följande artiklar för att lära dig mer -

  1. Objekt i C #
  2. 2D-matriser i C #
  3. Övergripande i C #
  4. Byta i C #
  5. Polymorfism i Java
  6. 2D-grafik i Java
  7. 3 olika typer av matriser i PHP (exempel)

Kategori: