Bevezetés a felülbíráláshoz a C # -ben

A C # felülbírálása az alap osztály módszer újbóli megvalósítása egy származtatott osztályban. Ebben a gyermek osztályban az alap osztály módszerét felülbírálják. A származtatott osztálymód neve és aláírása megegyezik az alap osztály módszerével. A felülbírálás hasznos a futásidejű polimorfizmus elérésében.

Van néhány kulcsszó, amelyeket a módszer felülbírálásában használnak.

1. Virtuális - Ezt a kulcsszót egy alaposztályhoz használják, amely azt jelzi, hogy az alaposztály módszerét felülbírálhatjuk.

public virtual void Method()
(
// implementation
)

2. Felülírás - Ezt a kulcsszót egy származtatott osztályhoz használják, amely azt jelenti, hogy a származtatott osztály felülbírálja az alap osztály módszerét.

public override void Method()
(
// implementation
)

3. Alap - Ezt a kulcsszót egy származtatott osztályban használják az alap osztály módszer meghívására.

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

Hogyan működik a felülbírálás a C # -ben?

Az alábbiakban bemutatunk egy példát arra, hogy hogyan hajthatjuk végre a felülbírálást a C # -ben.

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

A fenti példában két osztály létezik: az egyik alap- vagy szülőosztály, a másik származtatott osztály, vagy mondhatjuk, hogy gyermekosztály. Gyerekosztályban alapbázis módszer származik. Ebben a módszerben a szülőkben alkalmazott módszer virtuális, azaz azt a gyermek osztály felülbírálhatja. Gyermekben történő felülbírálás azt jelenti, hogy ez a módszer megegyezik a szülőosztály módszerével azonos módszer-aláírással.

A felülbírálás típusai a C # -ben

Az alábbiakban bemutatjuk azokat a példákat, amelyek a különféle kulcsszavakkal történő felülbírálást mutatják.

1. példa - Virtuális és felülíró kulcsszavak nélkül

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

A fenti példában nem használunk kulcsszót mindkét alapban, valamint a származtatott módszerekben.

A fő módszerben is a szülő hivatkozást használják a gyermek módszer hívására. Tehát ebben az esetben, ha nem használ kulcsszót, a szülő módszert hívják a gyermek módszer helyett. Tehát a kimenet lesz

Kimenet :

2 (a) példa - Virtuális és felülíró kulcsszavakkal

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

Ebben a példában a virtuális értéket az alaposztályban használják, ami azt jelenti, hogy felhatalmazást ad a gyermekosztály számára a módszer saját módon történő végrehajtására. Egy származtatott osztályban felülbírálást alkalmazunk, ami azt jelenti, hogy a felülbírálási módszer a gyermek módszer. Mindkét módszer azonos, ugyanazzal a névvel és ugyanazzal a metódus aláírással, de a megvalósítás része eltér. Ebben a példában a szülő hivatkozást is a gyermek módszer meghívására használjuk. Mivel azonban a szülő egy módszer virtuális, így a gyermek módszert nevezik először a szülő módszer helyett. Tehát a kimenet lesz

Kimenet :

2. példa b) - Virtuális és felülbíráló kulcsszavak

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

Ez a példa megegyezik az előző példával, de referenciaként ezt a gyermek módszerét használjuk.

Kimenet :

3. példa - Alap kulcsszóval

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

A fenti példában az alapot egy származtatott osztályban használjuk az alaposztály módszer meghívására. Tehát ebben az alapmódszerben először, majd a származtatott módszernek nevezzük.

Kimenet :

4. példa - Absztrakt osztályok felülírással

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

A fenti példában absztrakt módszert alkalmazunk. Egy elvont osztályt a származtatott osztály hajt végre, amely elvont módszert tartalmaz.

Kimenet :

A módszer felülírására vonatkozó szabályok

  • A származtatott osztály metódus-aláírásának meg kell egyeznie az alap osztályával.
  • Ugyanazon osztályon nem lehetséges a felülbírálás.
  • A hozzáférés-módosítóknak azonosaknak kell lenniük a virtuális és a felülbíráló módszereknél.
  • A virtuális kulcsszót az alaposztály módszerben, a felülírást pedig egy származtatott osztály módszerben használják.
  • Az alap osztály módszerének nem szabad statikusnak lennie.

Következtetés

Az felülbírálás hasznos a futásidejű polimorfizmusban. Ez lehetővé teszi a származtatott osztály számára, hogy az alap osztály módszerét saját módján valósítsa meg. Tehát a módszer megvalósítása eltér a származtatott osztálytól az alap osztálytól. A felülbírált módszer lehet virtuális, felülírható vagy elvont.

Ajánlott cikkek

Ez egy útmutató a C # felülbírálására. Itt megvitatjuk, hogyan lehet az elsőbbséget élvezõ és különbözõ kulcsszavakat használni a felülbíráláshoz a C # -ben, a példákkal együtt. Megnézheti más javasolt cikkeinket -

  1. Kivételkezelés C # -ben
  2. Tömbök C # -ben
  3. Módszer felülbíráló C #
  4. Változók a C # -ben
  5. Hozzáférés-módosítók a PHP-ben
  6. Polimorfizmus a Java-ban
  7. Absztrakt osztályok a JavaScript-ben
  8. Példák erre a kulcsszóra

Kategória: