Uvod u preopterećenje i preglasavanje u C #

Polimorfizam je jedan od važnih koncepata u C #. Postoje dvije vrste polimorfizma, vrijeme sastavljanja i vrijeme izvođenja. Koncept preopterećenja i prevladavanja koriste se za postizanje toga. Nadjačavanjem, dječja klasa može implementirati metodu nadređene klase na drugačiji način, ali metoda nadređene klase ima isto ime i isti potpis metode kao roditelj, dok kod preopterećenja postoji više metoda u klasi s istim imenom i različitim parametrima.

Kako prevladavanje i preopterećenje djeluje u C #?

Rad nadjačanja i preopterećenja u C # objašnjeni su dolje s primjerima:

najvažniji

Neke su ključne riječi koje koristimo u presvlačenju poput virtualne, nadjačane i bazične.

Sintaksa:

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

U ovom se slučaju koriste virtualne i nadređene ključne riječi, što znači da je osnovna klasa virtualna, a podređena klasa može implementirati ovu klasu, a nadjačati znači da ova podređena klasa ima isti naziv i isti potpis kao i roditeljska klasa.

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

U gornjem primjeru naziv metoda je isti, ali je njihova primjena različita. Osnovna klasa ima virtualnu te zahvaljujući toj dječjoj klasi može primijeniti metodu roditeljske klase na svoj način. Metoda podređene klase ima prevladavanje ključne riječi što pokazuje da je ta metoda metoda poništavanja.

Izlaz:

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

Izlaz:

U ovom primjeru, izvedena klasa ima osnovnu ključnu riječ koja se koristi za pozivanje metode osnovne klase. Dakle, u tom se slučaju izvedena metoda zove nakon metode osnovne klase.

Točke za pamćenje:

  • U prevladavajućem konceptu naziv metode i modifikator potpisa i pristupa uvijek je isti kao i roditeljska i podređena klasa.
  • Metoda nadređene klase ne može biti statična.

preopterećenje

U preopterećenju postoji više metoda s različitim potpisom metoda. Ispod je nekoliko primjera koji pokazuju kako možemo postići preopterećenje promjenom broja parametara, redoslijeda parametara i vrstama podataka.

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

U gornjem primjeru postoje dvije metode s istim nazivom, ali različitim brojem parametara. Prva metoda sastoji se od dva parametra, dok druga ima tri parametra. To se naziva metodom preopterećenja.

Izlaz:

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

U gornjem primjeru postoje dvije metode s istim nazivom, ali njihove su vrste podataka različite. Prva metoda ima cijeli broj podataka, dok druga ima dvostruki tip podataka. U ovom slučaju parametri su različiti zbog različitog tipa podataka.

Izlaz:

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

U gornjem primjeru naziv metoda je isti, ali redoslijed parametara je različit. Prva metoda ima naziv i id. dok drugi ima id odnosno ime.

Izlaz:

Točke za pamćenje:

  • U konceptu preopterećenja nije moguće definirati više metoda s istim parametrima u slučaju reda, vrste i broja.
  • Nije moguće preopteretiti metodu na temelju različitih vrsta povratka.

Prednosti preopterećenja i prejedanja u C #

  • Preopterećenje je jedan od načina postizanja statičkog, a preglasavanje je jedan od načina na koji C # postiže dinamički polimorfizam.
  • Pruža fleksibilnost korisniku i čistoću koda.

Zaključak

Preopterećenje i prevladavanje igraju glavnu ulogu u postizanju polimorfizma. Poništavanje omogućuje izvedenoj klasi da se na svoj način implementira, a s druge strane preopterećenje se odnosi na metode istog naziva i razne vrste implementacija parametara.

Preporučeni članci

Ovo je vodič za preopterećenje i preglasavanje u C #. Ovdje smo raspravljali o radu, sintaksi, prednostima preopterećenja i preglasavanja u C # s primjerima i implementacijom koda. Možete pogledati i sljedeće članke da biste saznali više -

  1. Objekti u C #
  2. 2D polja u C #
  3. Prevladavanje u C #
  4. Zamjena u C #
  5. Polimorfizam u Javi
  6. 2D grafika na Javi
  7. 3 različite vrste nizova u PHP-u (primjeri)

Kategorija: