Како користити наслеђивање у Ц#

Kako Koristiti Nasledivane U C



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

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

Шта је наслеђивање у Ц#

Како функционише наслеђивање у Ц#







Типови наслеђа у Ц#



Закључак



Шта је наслеђивање у Ц#

У Ц# користећи наслеђивање, једна класа може преузети или наследити својства и методе друге класе. Другим речима, омогућава креирање нове класе на основу постојеће класе, која је позната као основна класа или супер класа. Позива се класа формирана након преузимања својстава основне класе изведена класа или подкласе.





Ова изведена класа у Ц# не само да преузима својства основне класе, већ може и да додаје своје јединствене карактеристике.

Како функционише наслеђивање у Ц#

У Ц#, наслеђивање се постиже коришћењем дебелог црева (:) симбол. Име основне класе је дефинисано иза двотачке, а специфицира га изведена класа.



Следеће је синтакса за креирање изведене класе која преузима својства из основне класе:

цласс ДериведЦласс : БасеЦласс

{

// изведени чланови класе

}

Овде у овом коду, ДериведЦласс је име изведене класе, и БасеЦласс је назив основне класе. Тхе : симбол означава да ДериведЦласс наслеђује БасеЦласс. Чланови ДериведЦласс могу приступити члановима БасеЦласс, под условом да нису приватни.

Типови наслеђа у Ц#

Ц# подржава четири типа наслеђивања: једноструко, вишестепено, хијерархијско и вишеструко наслеђивање. Погледајмо сваку врсту.

Сингле Инхеританце

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

На пример, дати код објашњава хијерархију класа и демонстрира концепте наслеђивања.

користећи Систем ;

користећи Систем ;
класа Аутомобил
{
јавности празнина Почетак ( )
{
Конзола. ВритеЛине ( 'Ауто је покренуо' ) ;
}
}
класе Тесла : Ауто
{
јавности празнина Убрзати ( )
{
Конзола. ВритеЛине ( 'Тесла убрзава' ) ;
}
}
разред Програм
{
статична празнина Главни ( низ [ ] аргс )
{
Тесла миТесла = нови Тесла ( ) ;
миТесла. Почетак ( ) ; // Излаз: Ауто је покренут
миТесла. Убрзати ( ) ; // Излаз: Тесла убрзава
}
}

У горњем коду, Класа аутомобила је основна класа и има метод тзв Почетак() , који једноставно штампа поруку Ауто је упалио на конзолу.

Тхе Тесла класа је изведено из класе Цар и преузима сва својства класе Цар. Тесла класа додаје метод тзв Убрзати() , који штампа поруку Тесла убрзава на конзолу.

Тхе Главни() функција дефинише инстанцу класе Тесла под називом миТесла и позива своје методе Старт() и Аццелерате().

Наслеђивање на више нивоа

Наслеђивање на више нивоа је место где изведена класа наслеђује другу изведену класу, која заузврат наслеђује од основне класе.

На пример, следећи Ц# код демонстрира наслеђивање и надјачавање метода у хијерархији класа.

користећи Систем ;
разред Животиња
{
јавности празнина Једи ( )
{
Конзола. ВритеЛине ( 'Једење животиња' ) ;
}
}
класа Сисар : Анимал
{
јавности празнина Трцати ( )
{
Конзола. ВритеЛине ( 'Трчање сисара' ) ;
}
}
разред Пас : сисара
{
јавности празнина Лавеж ( )
{
Конзола. ВритеЛине ( 'Пас лаје' ) ;
}
}
разред Програм
{
статична празнина Главни ( низ [ ] аргс )
{
Дог миДог = нови пас ( ) ;
мој пас. Једи ( ) ; // Излаз: једење животиња
мој пас. Трцати ( ) ; // Излаз: Сисар трчи
мој пас. Лавеж ( ) ; // Излаз: лајање пса
}
}

Ево Пас је изведена класа која наслеђује од сисара , који пак наслеђује од Анимал . Класа Дог има приступ свим својствима, методама и понашању сисара и животиња, а такође може да дефинише сопствену јединствену методу Лавеж() .

Тхе Класа животиња је основна класа и има метод тзв једи() , који једноставно штампа поруку Животиња једе на конзоли.

Тхе Класа сисара је изведено из класе Анимал и додаје метод тзв Трцати() , који штампа поруку Сисар који трчи на конзолу.

Тхе Дог цласс је изведено из класе Маммал и додаје метод тзв Лавеж() , који штампа поруку Дог лавинг на конзоли.

Метода Маин() креира инстанцу класе Дог која се зове мој пас и позива своје методе Еат(), Рун() и Барк().

Имајте на уму да методе Еат() и Рун() нису дефинисане у класи Дог, већ су наслеђене од њених родитељских класа Анимал и сисара , редом. Тхе Лавеж() метода је дефинисана само у класи Дог.

  Текст
Опис је аутоматски генерисан

Хијерархијско наслеђе

У хијерархијском наслеђивању, различити бројеви изведених класа наслеђују се само из једне основне класе. На пример:

користећи Систем ;
класа Облик
{
јавности празнина Драв ( )
{
Конзола. ВритеЛине ( 'Цртање облика' ) ;
}
}
разред Круг : Облик
{
јавности празнина Филл ( )
{
Конзола. ВритеЛине ( 'Круг пуњења' ) ;
}
}
класа Трг : Облик
{
јавности празнина Боја ( )
{
Конзола. ВритеЛине ( 'Квадрат за бојење' ) ;
}
}
разред Програм
{
статична празнина Главни ( низ [ ] аргс )
{
Цирцле миЦирцле = нови Круг ( ) ;
миЦирцле. Драв ( ) ; // Излаз: Облик цртежа
миЦирцле. Филл ( ) ; // Излаз: круг за пуњење

Скуаре миСкуаре = нови трг ( ) ;
миСкуаре. Драв ( ) ; // Излаз: Облик цртежа
миСкуаре. Боја ( ) ; // Излаз: Квадрат за бојење
}
}

У горњем коду, обоје Цирцле и Квадрат су изведене класе које наслеђују од Облик . Они имају приступ методи Драв() дефинисаној у Схапе-у и такође могу дефинисати сопствене јединствене методе Филл() и Цолор().

Овде смо креирали објекат класе Цирцле под називом миЦирцле и објекат од Квадрат класа именована миСкуаре . Затим зовемо Цртање() метод, који је наслеђен из класе Схапе, на оба објекта.

Затим зовемо Филл() метод на миЦирцле, који је специфичан за класу Цирцле, и Боја() метод на миСкуаре, који је специфичан за квадратну класу.

Излаз ће бити одштампан на конзоли на следећи начин:

  Текст
Опис аутоматски генерисан са средњом поузданошћу

Вишеструко наслеђе

Вишеструко наслеђивање је место где изведена класа наслеђује више основних класа. Међутим, Ц# не подржава вишеструко наслеђивање. Да би постигао сличну функционалност, Ц# користи интерфејси .

Закључак

Наслеђивање у Ц# омогућава класама да наследе понашање и функционалност од основних класа. Користећи наслеђивање, можемо поново користити код и креирати хијерархијски ток унутар програма. Разумевањем различитих типова наслеђивања, може се написати ефикаснији и организованији код који је лакше одржавати и проширивати.