Meetod ülimuslik C # - Sissejuhatus - Sammud - Ülekaalu kasutamine

Lang L: none (table-of-contents):

Anonim

Sissejuhatus meetodi ülimuslikkusele C # -s

Lihtsamalt öeldes tähendab see võimalust muuta meetodite käitumist. Me kõik teame funktsiooni C ++ virtuaalset funktsiooni, milles kutsume funktsiooni tuletatud klassi põhiklassist. C-s # ületav meetod pakub sarnast privileegi kui virtuaalne funktsioon C ++ -s. Lindude eeskujul on kõigil lindudel sama atribuut kui kärbsel, värvil jne. Kuid erinevatel lindudel on erinev lendamisviis ja värvus varieerub lindude vahel. Seega võime tühistada Bird'i põhiklassi meetodid tuletatud klassides nagu papagoi, varblane, vares jne.

Kuidas kasutada ülekaalukaid C # -tes?

Oletame, et meie rakenduses on nõue muuta põhiklassi meetodi käitumist tuletatud klassis, siis peaksime minema meetodi alistamisele. Selle saavutamiseks peame erineva ülesande täitmiseks looma meetodi tuletatud klassis sama allkirjaga põhiklassis. Enne kui õpime ülimusliku tehnika kasutamist, peame meeles pidama allpool toodud punkte.

  • C # programmeerimisel nimetatakse meetodi alistamist ka käivitusaja polümorfismiks, hiliseks sidumiseks või dünaamiliseks polümorfismiks.
  • Ainult tuletatud klassides on meetodist ülevõtmine võimalik. Kuna meetod on põhiklassist tuletatud klassis tähtsusetu.
  • Meetod peaks olema mitte-virtuaalne või staatiline ülekirjutamise meetod.
  • Nii alistusmeetodi kui ka virtuaalse meetodi juurdepääsu taseme modifikaator peaksid olema samad.

Meetodit, mille alistamine on tühistatud, nimetatakse ületatud baasmeetodiks. See toimub põhiklassis. Ülepakutud põhimeetod võib olla kas abstraktne, alistada või virtuaalne. Sellest põhiklassist on päritud värske rakendus nimega override meetod.

Me kasutame meetodi alistamiseks erinevaid märksõnu. Nemad on,

1) Virtuaalne märksõna

Kuna kompilaator kohtub programmis virtuaalse märksõnaga, saab ta aru, et selle meetodi saab tühistada mis tahes selle tuletatud klassiga. Ülesehitus on järgmine.

public virtual int EnemyHealth()
(
Console.WriteLine("Enemy Health");
)

2) Märksõna tühistamine

See on tuletatud klassis. See ütleb kompilaatorile, et see meetod on põhiklassis sama nime ja allkirjaga meetodist ülimuslik.

public override int EnemyHealth ()
(
Console.WriteLine("Enemy 1");
)

Näide

Esiteks uurime näidet ilma virtuaalset ja üle kirjutavat märksõna kasutamata.

Kood:

class Birds
(
public void Color( )
(
Console.WriteLine("Birds will have different Colors");
)
)
class Parrot:Birds
(
public void Color( )
(
Console.WriteLine("Parrot is Green");
)
)
class ExecutionClass
(
public static void Main( )
(
Birds object;
object = new Birds( );
object .Color( );
object = new Parrot( );
object.Color( );
)
)

Väljund:

Ülaltoodud näites lõime tuletatud klassi Parrotand objekti, salvestades selle viite linnutüübi referentsmuutuja objektis.

Järgmises etapis kutsume võrdlusmuutuja objekti abil funktsiooni Värv (). Kuna objekt sisaldab viidet tüüpi Parroti objektile, on loomulik, et eeldame klassi Parroti funktsiooni Color () täitmist. Kuid me eksime. Programmeerimise ilu ei lase sellel juhtuda.

Meie üllatuseks on teostatud klassi Linnud meetod Color (). Põhjus on see, et funktsiooni kutsutakse lähtudes viite tüübist, mitte aga sellest, millele viitemuutuja objekt viitab. Kuna objekt on linnutüübi viide, kutsutakse klassi Linnud funktsioon Värv () sõltumata sellest, kellele objekt viitab.

Kirjutame nüüd sama programmi virtuaalseks ja alistame ümber. Seekord läheme parema mõistmise nimel samm-sammult edasi.

Looge suvalise nimega põhiklass. Siin ma kasutan linde. Kirjutage meetod virtuaalse märksõnaga. See on meie ülepakutud meetod, mille me pärandiklassis ümber jätame. Meetodi sees kirjutage mõni konsoolile printimiseks mõeldud teade.

class Birds
(
public virtual void Color( )
(
Console.WriteLine("Birds will have different Colors");
)
)

Nüüd looge veel üks klassi papagoi. Seekord pärime selle baasklassist, mille lõime varem, st linnud. Pärimiseks kasutame sümbolit::.

klassi papagoi: linnud

Kirjutage siin funktsioon, millel on märksõna alistamine ja kirjutage mõni teade. Veenduge, et tuletatud klassi meetodi nimi ja allkiri vastaksid põhiklassi meetodi nimele ja allkirjale.

public override void Color ( )
(
Console.WriteLine("Parrot is Green");
)

Ülemineku kontrollimiseks on vaja funktsionaalsuse täitmiseks veel ühte klassi. Looge ükskõik millise nimega klass. Selle sisse kirjutage põhifunktsioon.

class ExecutionClass
(
public static void Main( )
(
)
)

Looge vanemklassi objekt ja käivitage funktsioon klassi objekti abil. Selle rakendamiseks kasutatakse klassis Linnud kasutatavat värvimeetodit.

Birds object;
object = new Birds( );
object .Color( );

Nüüd looge tuletatud klassi objekt ja helistage värvimeetodile. See kutsub esile papagoi klassi värvimeetodi.

object = new Parrot( );
object.Color( );

Kas saate programmi väljundit ära arvata? See on näidatud allpool.

Väljund:

Märksõnad alistavad ja virtuaalsed võimaldavad tugineda põhiklassile ja tuletatud klassimeetoditele igal ajahetkel eraldi, isegi kui meetodi nimed ja allkirjad on samad.

Järeldus

Selles artiklis saime aru meetodi ülimusest, meetodi ülitähtsusest, reaalse maailma näitest ülimuslikust põhimõttest, selle saavutamise viisist, virtuaalsete ja alistavate märksõnade kasutamise vajalikkusest ning koodi ülekirjutamise näitest. Võib järeldada, et alistamine on polümorfismi üks kasulikest omadustest, mille abil saame muuta põhiklassi meetodi käitumist tuletatud klassis.

Soovitatavad artiklid

See on juhend meetodi ülimuslikkuse kohta C # -s. Siin käsitleme sissejuhatust, kuidas kasutada ülimuslikke ja erinevaid märksõnu meetodi alistamiseks koos näidete ja sammudega. Lisateabe saamiseks võite vaadata ka järgmisi artikleid -

  1. C # funktsioonid
  2. C # käsud
  3. Mis on C # mitmekorruseline?
  4. C # keelte funktsioonid
  5. Juhend C ++ alistamiseks
  6. Ülekaalus Java
  7. Mitmekeermeline C # meetoditega