Introduktion til overbelastning og overstyring i C #

Polymorfisme er et af de vigtige begreber i C #. Der er to typer polymorfisme, kompileringstid og køretid. Overbelastning og overskydende koncepter bruges til at opnå dette henholdsvis. Ved tilsidesættelse kan en barneklasse implementere forældreklasse-metoden på en anden måde, men barneklasse-metoden har samme navn og samme metodesignatur som forælder, mens der ved overbelastning findes flere metoder i en klasse med samme navn og forskellige parametre.

Hvordan fungerer overoverskridelse og overbelastning i C #?

Arbejdet med at tilsidesætte og overbelaste i C # forklares nedenfor med eksempler:

Overstyring

Der er nogle nøgleord, som vi bruger i tilsidesættelse som virtuel, tilsidesættelse 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 bruges virtuelle og tilsidesætte nøgleord, hvilket betyder, at baseklassen er virtuel, og underordnet klasse kan implementere denne klasse, og tilsidesættelse betyder, at denne underordnede klasse har samme navn og samme metodesignatur som forældreklasse.

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 ovenstående eksempel er metodernes navn det samme, men deres implementering er anderledes. Baseklassen har virtuel, og på grund af den bør klassen implementere forældreklasse-metoden på sin egen måde. Underklassemetoden har søgeordsoverskridelse, som viser, at denne metode er en tilsidesættelsesmetode.

Produktion:

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

Produktion:

I dette eksempel har den afledte klasse et basisnøgleord, der bruges til at kalde basisklasse-metoden. Så i dette tilfælde kaldes den afledte metode efter basisklasse-metoden.

Punkter at huske:

  • I det altoverskyggende koncept er navnet på metoden og metodesignatur og adgangsmodifikator altid det samme som forældre- og barneklasse.
  • Forældreklasse-metoden kan ikke være statisk.

overbelastning

Ved overbelastning er der flere metoder med forskellige metodesignaturer. Nedenfor er nogle eksempler, der viser, hvordan vi kan opnå overbelastning ved at variere antallet af parametre, rækkefølgen af ​​parametre og datatyper af parametre.

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 ovenstående eksempel er der to metoder med samme navn men et andet antal parametre. Den første metode består af to parametre, mens den anden har tre parametre. Dette kaldes metodeoverbelastning.

Produktion:

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 ovenstående eksempel er der to metoder med samme navn, men deres datatyper er forskellige. Den første metode har en heltal datatype, mens den anden har en dobbelt datatype. Så i dette tilfælde varierer parametrene på grund af den forskellige datatype.

Produktion:

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 ovenstående eksempel er metodernes navn det samme, men rækkefølgen af ​​parametre er forskellige. Den første metode har et navn og id resp. hvorimod den anden har henholdsvis id og navn.

Produktion:

Punkter at huske:

  • I et overbelastningskoncept er det ikke muligt at definere mere end en metode med de samme parametre i tilfælde af rækkefølge, type og nummer.
  • Det er ikke muligt at overbelaste en metode baseret på de forskellige returtyper.

Fordele ved overbelastning og overstyring i C #

  • Overbelastning er en af ​​måderne til at opnå statisk og tilsidesættelse er en af ​​måderne, hvorpå C # opnår dynamisk polymorfisme.
  • Det giver brugeren fleksibilitet og renhed af koden.

Konklusion

Overbelastning og tilsidesættelse spiller en vigtig rolle i opnåelsen af ​​polymorfisme. Overriding tillader afledt klasse at implementere på sin egen måde, og på den anden side handler overbelastning om metoder med samme navn og forskellige typer af parameterimplementeringer.

Anbefalede artikler

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

  1. Objekter i C #
  2. 2D-arrays i C #
  3. Overstyring i C #
  4. Udskiftning i C #
  5. Polymorfisme i Java
  6. 2D-grafik i Java
  7. 3 forskellige typer arrays i PHP (eksempler)

Kategori: