Sissejuhatus C # alistamisele

C # ülimuslikkus on põhiklassi meetodi uuesti rakendamine tuletatud klassis. Selles kaalutakse põhiklassi meetodit lasteklassis. Tuletatud klassimeetodil on sama nimi ja allkiri kui põhiklassi meetodil. Ülesvõtmine on kasulik Runtime'i polümorfismi saavutamiseks.

Meetodi ülekaalus on mõned märksõnad.

1. Virtuaalne - seda märksõna kasutatakse põhiklassiga, mis tähendab, et põhiklassi meetodit saab alistada.

public virtual void Method()
(
// implementation
)

2. Ülekirjutamine - seda märksõna kasutatakse tuletatud klassiga, mis tähistab seda, et tuletatud klass alistab põhiklassi meetodi.

public override void Method()
(
// implementation
)

3. Alus - seda märksõna kasutatakse tuletatud klassis põhiklassi meetodi kutsumiseks.

public override void Method()
(
base.Method();
// implementation
)

Kuidas ülimuslik töötab C # -s?

Allpool on toodud näide, kuidas saaksime rakenduses C # alistada ülimuslikkust.

class Parent
(
public virtual void Demo() // base class
(
Console.WriteLine(“This is parent”);
)
)
class Child: Parent
(
public override void Demo() // derived class
(
Console.WriteLine(“This is child”);
)
)

Ülaltoodud näites on kaks klassi, üks on põhiklass või vanemklass ja teine ​​on tuletatud klass või võime öelda, lasteklass. Lasteklassis tuletatakse põhiklassi meetod. Selles meetodis on vanemmeetod virtuaalne, mis tähendab, et lasteklass võib selle ümber lükata. Lapse alistamine tähendab, et see meetod on sama mis vanema klassi meetod sama meetodi allkirjaga.

C-s ülevõtmise tüübid

Allpool on näited, mis näitavad erinevate märksõnadega ülimuslikkust.

Näide 1 - ilma virtuaalsete ja tühistavate märksõnadeta

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Overriding
(
class Bird // base class
(
public void fly() // base class method
(
Console.WriteLine("Birds are flying");
)
)
class Peacock : Bird // derived class
(
public new void fly() // derived class method
(
Console.WriteLine("Peacock is flying");
)
)
class Program
(
// main method
static void Main(string() args)
(
Bird b = new Peacock();
b.fly();
Console.ReadLine();
)
)
)

Ülaltoodud näites ei kasutata märksõna ega tuletatud meetodites ühtegi märksõna.

Ka põhimeetodi puhul kasutatakse lapsemeetodi kutsumiseks vanema viidet. Seega, kui märksõna ei kasutata, nimetatakse lapsemeetodi asemel vanemmeetodit. Nii et väljund saab olema

Väljund:

Näide 2 (a) - virtuaalsete ja alistavate märksõnadega

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Overriding
(
class Bird // base class
(
public virtual void fly() // base class method
(
Console.WriteLine("Birds are flying");
)
)
class Peacock : Bird // derived class
(
public override void fly() // derived class method
(
Console.WriteLine("Peacock is flying");
)
)
class Program
(
// main method
static void Main(string() args)
(
Bird b = new Peacock();
b.fly();
Console.ReadLine();
)
)
)

Selles näites kasutatakse põhiklassis virtuaalset, mis tähendab, et see annab lasteklassile volituse meetodit omal moel rakendada. Tuletatud klassis kasutatakse alistamist, mis tähendab, et alistusmeetodiks on lapsmeetod. Mõlemad meetodid on samad sama nime ja sama meetodi allkirjaga, kuid rakendamise osa on erinev. Ka selles näites kasutatakse lapsemeetodi kutsumiseks vanema viidet. Kuna vanem on meetod, on virtuaalne, seetõttu nimetatakse vanemmeetodi asemel kõigepealt lapsemeetodit. Nii et väljund saab olema

Väljund:

Näide 2 (b) - virtuaalsed ja tühistavad märksõnad

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Overriding
(
class Bird // base class
(
public virtual void fly() // base class method
(
Console.WriteLine("Birds are flying");
)
)
class Peacock : Bird // derived class
(
public override void fly() // derived class method
(
Console.WriteLine("Peacock is flying");
)
)
class Program
(
//main method
static void Main(string() args)
(
Peacock p = new Peacock();
p.fly();
Console.ReadLine();
)
)
)

See näide on sama, mis eelmine näide, kuid selle lapse meetodit kasutatakse viitamiseks.

Väljund:

Näide 3 - põhisõnaga

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Overriding
(
class Bird // base class
(
public virtual void fly() // base class method
(
Console.WriteLine("Birds are flying");
)
)
class Peacock : Bird // derived class
(
public override void fly() // derived class method
(
base.fly(); // base is use to call parent method
Console.WriteLine("Peacock is flying");
)
)
class Program
(
static void Main(string() args)
(
Peacock p = new Peacock();
p.fly();
Console.ReadLine();
)
)
)

Ülaltoodud näites kasutatakse baasi tuletatud klassis põhiklassi meetodi kutsumiseks. Nii nimetatakse selles baasmeetodis kõigepealt ja siis tuletatud meetodiks.

Väljund:

4. näide - abstraktsed klassid ülimuslikkusega

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Overriding
(
abstract class Calculate
(
public abstract int sum();
)
class Values : Calculate // derived class
(
int val1;
int val2;
public Values(int a = 0, int b = 0)
(
val1 = a;
val2 = b;
)
public override int sum()
(
Console.WriteLine("sum of two values");
return (val1 + val2);
)
)
class Program
(
static void Main(string() args)
(
Values v = new Values(10, 20);
int a = v.sum();
Console.WriteLine(a);
Console.ReadLine();
)
)
)

Ülaltoodud näites kasutatakse abstraktset meetodit. Abstraktset klassi rakendab tuletatud klass, mis sisaldab abstraktset meetodit.

Väljund:

Meetodi alustamise reeglid

  • Tuletatud klassi meetodi allkiri peaks olema sama kui põhiklass.
  • Üleminek pole samas klassis võimalik.
  • Juurdepääsu modifikaatorid peavad olema samad virtuaalsete meetodite ja alistavate meetodite jaoks.
  • Baasklassi meetodis kasutatakse virtuaalset märksõna ja tuletatud klassimeetodis kasutatakse Override.
  • Põhiklassi meetod ei tohiks olla staatiline.

Järeldus

Ülesvõtmine on kasulik jooksuajas polümorfismis. See võimaldab tuletatud klassil baasklassi meetodit omal moel rakendada. Seega erineb meetodi rakendamine tuletatud klassist selle põhiklassist. Ülepakutud meetod võib olla virtuaalne, alistada või abstraktne.

Soovitatavad artiklid

See on juhend C #-s ülimuslikkuse saavutamiseks. Siin arutleme, kuidas kasutada ülekaalukaid ja erinevaid märksõnu alistamiseks C # koos näidetega. Võite vaadata ka meie teisi soovitatud artikleid -

  1. Erandkäsitlus C # -s
  2. Massiivid C # -s
  3. Meetodi ülimuslik C #
  4. Muutujad C-numbris
  5. Juurdepääs modifikaatoritele PHP-s
  6. Polümorfism Java-s
  7. Abstraktsed klassid JavaScriptis
  8. Selle märksõna näited

Kategooria: