Прегласавање метода у Ц # - Увод - Кораци - Употреба превладавања

Преглед садржаја:

Anonim

Увод о прегласавању метода у Ц #

Превладавање у једноставном смислу значи способност модификације понашања метода. Сви знамо за Виртуалну функцију у Ц ++, у којој позивамо функцију из основне класе у изведеној класи. Прегласавање метода у Ц # пружа сличну привилегију као Виртуална функција у Ц ++. Да узмемо пример птица, све птице ће имати исти атрибут као мува, боја итд. Али различите птице ће имати различит начин летења и боја ће се разликовати од птице до птице. На тај начин можемо надвладати Бирд методе основне класе у изведеним класама попут папагаја, врапца, врана итд.

Како користити прегласавање у Ц #?

Претпоставимо да наша апликација има захтев да промени понашање методе основне класе у изведеној класи, тада бисмо требали ићи на прегласавање метода. Да бисмо то постигли, морамо да креирамо методу у изведеној класи са истим потписом у основној класи да бисмо извршили другачији задатак. Пре него што научимо како користити важну технику, морамо имати на уму следеће тачке.

  • У Ц # програмирању, превладавање метода се такође назива полиморфизам времена извођења, касно везивање или динамички полиморфизам.
  • Само у изведеним класама метода прегласавања је могућа. Зато што је метода надјачана у изведеном разреду из основне класе.
  • Метода би требала бити не-виртуална или статичка метода за поништавање.
  • Модификатор нивоа приступа и методе прегласавања и виртуелне методе треба да буде исти.

Метода која се надјачава декларацијом прегласавања назива се метода оверридден басе. Ово ће бити присутно у основној класи. Метода преписане базе може бити апстрактна, надјачана или виртуална. Из ове основне класе наслеђује се нова имплементација која се зове оверриде метода.

За прегласавање метода користимо различите кључне речи. Су,

1) Виртуелна кључна реч

Ми компајлер наиђе на виртуелну кључну реч у програму, он разуме да ову методу може да надјача било која од њених изведених класа. Структура је као испод.

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

2) Надјачај кључну реч

Ово је присутно у изведеној класи. Компајлеру каже да ова метода надјачава методу с истим именом и потписом у основној класи.

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

Пример

Прво, погледајмо пример без коришћења кључне речи Виртуал и Оверриде.

Шифра:

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

Излаз:

У горњем примјеру смо направили објекат изведене класе Парротанд који похрањује своју референцу у објект референтне варијабле типа Бирдс.

У сљедећем кораку, помоћу објекта референтне варијабле, позивамо функцију Цолор (). Пошто објект садржи референцу на објект типа Паррот, природно је да очекујемо да се функција Цолор () класе Паррот изврши. Али грешимо. Лепота програма неће дозволити да се то догоди.

На наше изненађење, оно што се извршава је Цолор () метода класе Бирдс. То је зато што се функција позива на основу врсте референце, а не на оно на што се односи референтна варијабла. Пошто је објект референца типа Бирдс, позват ће се функција Цолор () класе Бирдс, без обзира на који се објект односи.

Сада ћемо поново написати исти програм са виртуелним и пребрисати. Овај пут ћемо ићи корак по корак за бољим разумевањем.

Креирајте базу са било којим именом. Овде користим Птице. Напишите методу помоћу виртуелне кључне речи. Ово ће бити наша поништена метода коју ћемо надвладати у наслеђеној класи. Унутар методе напишите неку поруку за штампање у конзоли.

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

Сада креирајте још једну класу Паррот. Овај пут ћемо је наследити од основне класе коју смо креирали раније, тј. Птице. За наслеђивање користимо симбол ':'.

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

Овде напишите функцију са прегласавањем кључне речи и напишите неку поруку. Провјерите да ли се назив методе и потпис у изведеној класи подударају с именом методе и потписом у основној класи.

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

Можете ли погодити који је резултат када покренемо програм? Ово је приказано испод.

Излаз:

Кључне речи надјачајне и виртуелне омогућавају да у било које време одвојено позову методе основне класе и изведене класе, чак и ако су имена и потписи метода исти.

Закључак

У овом смо чланку схватили методу прегласавања, потребу за прегласавањем методе, пример стварног принципа превладавања, начин да се постигне, неопходност коришћења виртуелних и прегласавајућих кључних речи и пример прегласавања помоћу кода. Можемо закључити да је прегласавање једна од корисних карактеристика полиморфизма којим можемо променити понашање методе основне класе у изведеној класи.

Препоручени чланци

Ово је водич за прегласавање метода у Ц #. Овдје смо расправљали о Уводу, како користити превладавајуће и различите кључне ријечи за прегласавање метода заједно с примјерима и корацима. Такође можете погледати следеће чланке да бисте сазнали више -

  1. Ц # функције
  2. Ц # команде
  3. Шта је Мултитхреадинг у Ц #?
  4. Ц # стринг функције
  5. Водич за прегласавање у Ц ++
  6. Превладавање у Јави
  7. Мултитхреадинг у Ц # с методама