Метод отменяне в C # - Въведение - Стъпки - Използване на преодоляване

Съдържание:

Anonim

Въведение в метода за отмяна на C #

Преодоляването с просто понятие означава, способността да се променя поведението на методите. Всички знаем за виртуалната функция в C ++, в която извикваме функцията от базовия клас в извлечения клас. Преопределянето на метода в C # предоставя подобна привилегия като виртуалната функция в C ++. За да вземем пример за птиците, всички птици ще имат същия атрибут като муха, цвят и др. Но различните птици ще имат различен начин на летене и цветът ще варира от птица до птица. Така че можем да отменим методите на базовия клас Bird в производни класове като папагал, врабче, врана и т.н.

Как да използвате преодоляване в C #?

Да предположим, че в нашето приложение има изискване да променим поведението на метода на базовия клас в производен клас, тогава трябва да преминем към преодоляване на метода. За да постигнем това, трябва да създадем метода в производен клас със същия подпис в базовия клас, за да изпълним различна задача. Преди да се научим как да използваме по-важната техника, трябва да имаме предвид по-долу точки.

  • В програмирането на C # методът Overriding се нарича още полиморфизъм на времето на изпълнение, късно свързване или динамичен полиморфизъм.
  • Само в производни класове методът е отменен. Тъй като метод се презаписва в извлечения клас от базовия клас.
  • Методът трябва да бъде не-виртуален или статичен метод за отмяна.
  • Модификатор на нивото на достъп както на метода на замяна, така и на виртуалния метод трябва да бъде един и същ.

Методът, който се отменя от декларацията за отмяна, се нарича метод на преодоляване на основата. Това ще присъства в базовия клас. Методът на преобърната база може да бъде абстрактна, отменена или виртуална. От този основен клас се наследява свеж реализиран метод, наречен override метод.

Използваме различни ключови думи за отмяна на метода. Те са,

1) Виртуална ключова дума

Ние, когато компилаторът срещне виртуалната ключова дума в програмата, той разбира, че този метод може да бъде отменен от всеки от неговите производни класове. Структурата е както по-долу.

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

2) Замяна на ключовата дума

Това присъства в производния клас. Той казва на компилатора, че този метод отменя метода със същото име и подпис в базовия клас.

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

пример

Първо, нека разгледаме примера, без да използваме ключовата дума Virtual и override.

Код:

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

изход:

В горния пример създадохме обект от извлечен клас Parrotand, съхранявайки неговата референция в обекта на референтната променлива от типа Птици.

В следващата стъпка, използвайки обект на референтната променлива, ние извикваме функцията Color (). Тъй като обектът съдържа препратка към обект от тип Parrot, естествено е да очакваме функцията Color () на клас Parrot да се изпълни. Но грешим. Красотата на програмирането няма да позволи това да се случи.

За наша изненада това, което се изпълнява, е методът Color () на клас Птици. Това е така, защото функцията се извиква въз основа на типа референция, а не на това, към което се отнася обектът на референтната променлива. Тъй като обектът е референция от тип Birds, функцията Color () на клас Birds ще бъде извикана, без значение към кого се отнася обектът.

Сега нека пренапишем същата програма с виртуална и отмяна Този път ще преминем стъпка по стъпка за по-добро разбиране.

Създайте базов клас с всяко име. Тук използвам птици. Напишете метод с виртуалната ключова дума. Това ще бъде нашият отменен метод, който ще отменим в наследения клас. Вътре в метода напишете съобщение, което да отпечатате в конзолата.

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

Сега създайте още един клас Parrot Този път ще го наследим от базовия клас, който сме създали по-рано, т.е. Птиците. За наследяване използваме символа ':'.

клас Папагал: Птици

Тук напишете функция с ключова дума за замяна и напишете някакво съобщение. Уверете се, че името и подписът на метода в извлечения клас съвпадат с името на метода и подписа в базовия клас.

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

Нуждаем се от още един клас, за да изпълним функционалността, за да проверим по-важното. Създайте клас с произволно име. Вътре в това пише основната функция.

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

Създайте обект от родителския клас и задействайте функцията, като използвате обекта на класа. Това ще се позове на метода Цвят, присъстващ в класа Птици.

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

Сега създайте обекта на производния клас и извикайте метода Color. Това ще се позове на метода Цвят на клас Папагал.

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

Можете ли да познаете изхода, когато стартираме програмата? Това е както е показано по-долу.

изход:

Ключовите думи заменят и виртуалните позволяват да се извикват отделни методи на базовия клас и производни класове по всяко време, дори ако имената и подписите на метода са еднакви.

заключение

В тази статия разбрахме метода за отмяна, необходимостта от метода за отмяна, примера на реалния свят на принципа на преодоляване, начина за постигането му, необходимостта от използване на виртуалните и отменящите ключови думи и примера за отменяне с помощта на кода. Можем да заключим, че преодоляването е една от полезните характеристики в полиморфизма, която можем да променим поведението на метода на базовия клас в производен клас.

Препоръчителни статии

Това е ръководство за отмяна на метода в C #. Тук обсъждаме въвеждането, как да използваме ключови и различни ключови думи за преодоляване на метода заедно с примери и стъпки. Можете също да разгледате следните статии, за да научите повече -

  1. C # функции
  2. C # Команди
  3. Какво е многопоточност в C #?
  4. C # струнни функции
  5. Ръководство за преодоляване в C ++
  6. По-важно в Java
  7. Многопоточност в C # с методи