Sissejuhatus C # ülekoormamisse ja alistamisse

Polümorfism on C # -s üks olulisi mõisteid. Polümorfismi on kahte tüüpi: kompileerimise aeg ja jooksuaeg. Selle saavutamiseks kasutatakse vastavalt ülekoormuse ja ülekaalu kontseptsioone. Ülekirjutamisel saab lasteklass vanemklassi meetodit rakendada teisiti, kuid lasteklassi meetodil on sama nimi ja sama meetodi allkiri kui vanemal, samas kui ülekoormamisel on klassis mitu nime, millel on sama nimi ja erinevad parameetrid.

Kuidas C #-s ületamine ja ülekoormamine toimib?

Allpool selgitatakse näidetega C # ületamise ja ülekoormamise toimimist:

Ülimuslik

Mõned märksõnad, mida me ülekirjutamisel kasutame, nagu virtuaalne, alistamine ja alus.

Süntaks:

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

Selles kasutatakse virtuaalseid ja alistavaid märksõnu, mis tähendab, et põhiklass on virtuaalne ja lasteklass saab seda klassi rakendada, ning alistamine tähendab, et sellel lasteklassil on sama nimi ja sama meetodiallkiri kui vanemklassil.

Näide nr 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();
)
)
)

Ülaltoodud näites on meetodite nimi sama, kuid nende rakendamine on erinev. Põhiklass on virtuaalne ja tänu sellele saab lasteklass vanemklassi meetodit omal moel rakendada. Lasteklassi meetodil on märksõna alistamine, mis näitab, et see meetod on alistusmeetod.

Väljund:

Näide 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();
)
)
)

Väljund:

Selles näites on tuletatud klassil põhisõna, mida kasutatakse põhiklassi meetodi kutsumiseks. Niisiis nimetatakse tuletatud meetodit põhiklassi meetodi järgi.

Juhib tähelepanu:

  • Ülekaaluka kontseptsiooni korral on meetodi nimi ning meetodi allkirja ja juurdepääsu modifikaatori nimi alati sama, mis vanema- ja lapsiklassil.
  • Vanemklassi meetod ei saa olla staatiline.

Ülekoormamine

Ülekoormamisel on mitu meetodit erineva allkirjaga. Allpool on toodud mõned näited, mis näitavad, kuidas saavutada ülekoormus, muutes parameetrite arvu, parameetrite järjekorda ja parameetrite andmetüüpe.

Näide nr 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();
)
)
)

Ülaltoodud näites on kaks meetodit, millel on sama nimi, kuid erinev arv parameetreid. Esimene meetod koosneb kahest parameetrist, teine ​​aga kolmest parameetrist. Seda nimetatakse meetodi ülekoormamiseks.

Väljund:

Näide 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();
)
)
)

Ülaltoodud näites on kaks sama nimega meetodit, kuid nende andmetüübid on erinevad. Esimesel meetodil on täisarvandmete tüüp, teisel aga topeltandmetüüp. Seega on parameetrid erineva andmetüübi tõttu erinevad.

Väljund:

Näide 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();
)
)
)

Ülaltoodud näites on meetodite nimed samad, kuid parameetrite järjekord on erinev. Esimesel meetodil on nimi ja id resp. arvestades, et teisel on vastavalt id ja nimi.

Väljund:

Juhib tähelepanu:

  • Ülekoormuskontseptsiooni korral pole järjestuse, tüübi ja numbri korral võimalik määratleda rohkem kui ühte samade parameetritega meetodit.
  • Erinevatel tagasitüüpidel põhinevat meetodit pole võimalik üle koormata.

C # ülekoormamise ja alistamise eelised

  • Ülekoormus on üks staatilise saavutamise viise ja ületamine on üks viisidest, kuidas C # saavutab dünaamilise polümorfismi.
  • See pakub kasutajale paindlikkust ja koodi puhtust.

Järeldus

Polümorfismi saavutamisel on suur roll ülekoormamisel ja alistamisel. Ülekirjutamine võimaldab tuletatud klassi omal moel rakendada ja teisalt tähendab ülekoormamine sama nimega meetodeid ja erinevat tüüpi parameetrite rakendusi.

Soovitatavad artiklid

See on juhend C # ülekoormamise ja alistamise kohta. Siin käsitleme näiteid ja koodi rakendamist C # -s töötavast, süntaksist, ülekoormamise ja alistamise eelistest. Lisateabe saamiseks võite vaadata ka järgmisi artikleid -

  1. C-tüüpi objektid
  2. 2D-massiivid C # -s
  3. C-s ülimuslik
  4. Vahetus C # -s
  5. Polümorfism Java-s
  6. 2D graafika Java-s
  7. 3 erinevat tüüpi massiive PHP-s (näited)

Kategooria: