Introduksjon til overbelastning og overstyring i C #

Polymorfisme er et av de viktige begrepene i C #. Det er to typer polymorfisme, sammenstille tid og kjøretid. Overbelastnings- og overstyringskonsepter brukes for å oppnå dette henholdsvis. Ved å overstyre kan en barneklasse implementere foreldreklasse-metoden på en annen måte, men barneklasse-metoden har samme navn og samme metodesignatur som foreldre, mens det ved overbelastning er flere metoder i en klasse med samme navn og forskjellige parametere.

Hvordan overstyring og overbelastning fungerer i C #?

Arbeidet med å overstyre og overbelaste i C # blir forklart nedenfor med eksempler:

Overstyre

Det er noen nøkkelord som vi bruker i overstyring som virtuell, overstyring og base.

syntaks:

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 dette brukes virtuelle og overstyre nøkkelord som betyr at baseklassen er virtuell og barneklasse kan implementere denne klassen og overstyre betyr at denne barneklassen har samme navn og samme metodesignatur som foreldreklasse.

Eksempel 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 eksemplet ovenfor er metodenavn det samme, men implementeringen av dem er annerledes. Baseklassen har virtuell og på grunn av den barneklassen kan implementere foreldreklasse metoden på sin egen måte. Barnetekstmetoden har overstyring av nøkkelord som viser at denne metoden er en overstyringsmetode.

Produksjon:

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

Produksjon:

I dette eksemplet har den avledede klassen et basesøkkelord som brukes til å kalle baseklasse-metoden. Så i så fall kalles den avledede metoden etter baseklasse-metoden.

Poeng å huske:

  • I det overordnede konseptet er navnet på metoden og metodesignaturen og tilgangsmodifisereren alltid det samme som foreldre- og barneklasse.
  • Foreldreklasse-metoden kan ikke være statisk.

overbelastning

I overbelastning er det flere metoder med forskjellig metodesignatur. Nedenfor er noen eksempler som viser hvordan vi kan oppnå overbelastning ved å variere antall parametere, rekkefølgen på parametere og datatyper av parametere.

Eksempel 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 eksemplet over er det to metoder med samme navn, men et annet antall parametere. Den første metoden består av to parametere mens den andre har tre parametere. Dette kalles metodebelastning.

Produksjon:

Eksempel 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 eksemplet over er det to metoder med samme navn, men datatypene deres er forskjellige. Den første metoden har en heltal datatype, mens den andre har en dobbel datatype. Så i dette tilfellet varierer parametrene på grunn av den forskjellige datatypen.

Produksjon:

Eksempel 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 eksemplet over er navnet på metodene det samme, men rekkefølgen på parametere er forskjellig. Den første metoden har navn og id resp. mens den andre har henholdsvis ID og navn.

Produksjon:

Poeng å huske:

  • I et overbelastningskonsept er det ikke mulig å definere mer enn en metode med de samme parametrene i tilfelle rekkefølge, type og antall.
  • Det er ikke mulig å overbelaste en metode basert på de forskjellige returtypene.

Fordeler med overbelastning og overstyring i C #

  • Overbelastning er en av måtene å oppnå statisk og overstyring er en av måtene C # oppnår dynamisk polymorfisme.
  • Det gir brukeren fleksibilitet og renslighet av koden.

Konklusjon

Overbelastning og overstyring spiller en viktig rolle i å oppnå polymorfisme. Overriding lar avledet klasse implementere på sin egen måte, og på den annen side handler overbelastning om metoder med samme navn og forskjellige typer parameterimplementeringer.

Anbefalte artikler

Dette er en guide til overbelastning og overstyring i C #. Her diskuterer vi arbeidet, syntaks, fordelene ved overbelastning og overstyring i C # med eksempler og kodeimplementering. Du kan også se på følgende artikler for å lære mer -

  1. Objekter i C #
  2. 2D Arrays i C #
  3. Overriding i C #
  4. Bytt i C #
  5. Polymorfisme i Java
  6. 2D-grafikk i Java
  7. 3 forskjellige typer matriser i PHP (eksempler)