Ц ++ наслеђивање

C Inheritance



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

У овом чланку ћемо расправљати о концепту наслеђивања у Ц ++ програмирању. Објаснићемо концепт функције пријатеља у Ц ++ са радним примерима.







Зашто наслеђивање?

Наслеђивање омогућава креирање нове класе или изведене класе из друге класе или основне класе. Изведена класа или подређена класа ће имати све карактеристике надређене класе или основне класе. Код можемо поново користити уз помоћ наслеђивања.



Врста наслеђивања

Постоје различите врсте наслеђа:



  1. Једноставно/појединачно наслеђивање
  2. Хијерархијско наслеђивање
  3. Наслеђивање на више нивоа
  4. Вишеструко наслеђивање

У овом чланку ћемо размотрити само једноставно/појединачно наслеђивање.





Пример 1:

Погледајмо сада пример програма да бисмо разумели концепт наслеђивања у Ц ++. Дефинирали смо базну класу, а затим из ње извели другу класу. Према томе, изведена класа ће имати карактеристике (чланове и функције) из основне класе.

#инцлуде

користећи именски простор стд;

цласс Басе_Цласс
{
јавности:
инти;
празнинаприказ()
{
цена<< 'Приказ основне класе' <<и<<ендл;
}

};

цласс Деривед_Цласс:публиц Басе_Цласс
{
јавности:
празнинаПрикажи()
{
цена<< 'Схов оф Деривед Цласс' <<ендл;
}
};

интглавни()
{
Изведена_класа дц;
дц.и = 100;
дц.приказ();
дц.Прикажи();

повратак 0;
}



Пример 2:

Ово је још један пример наслеђивања у Ц ++. У овом примеру ћемо видети како се конструктори зову када се направи објект изведене класе.

Као што видите доле, дефинисали смо два конструктора основне класе и три конструктора изведене класе. Из доњег излаза можете јасно приметити да се прво позива конструктор основне класе пре него што се позове конструктор изведене класе.

#инцлуде
користећи именски простор стд;

цласс Басе_Цласс
{
јавности:
Басе_Цласс()
{
цена<< 'Басе_Цласс - Без параметара' <<ендл;
}
Басе_Цласс(интИкс)
{
цена<< 'Басе_Цласс - Параметри:' <<Икс<<ендл;
}
};

цласс Деривед_Цласс:публиц Басе_Цласс
{
јавности:
Деривед_Цласс()
{
цена<< 'Деривед_Цласс - Но Параметерс' <<ендл;
}
Деривед_Цласс(инти)
{
цена<< 'Деривед_Цласс - Параметерс:' <<и<<ендл;
}
Деривед_Цласс(интИкс,инти):Басе_Цласс(Икс)
{
цена<< 'Парам оф Деривед_Цласс:' <<и<<ендл;
}
};

интглавни()
{
Изведена_разред д(7,19);
}

Пример 3:

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

Као што видите, постоје две дефинисане класе: Рецтангле_Цласс и Цубе_Цласс. Рецтангле_Цласс је основна класа из које је изведена класа, тј. Цубе_Цласс. Због тога наслеђујемо карактеристике из Рецтангле_Цласс у Цубе_Цласс.

Такође, можете приметити да наслеђујемо Цубе_Цласс са јавном контролом приступа. То значи да изведена класа може приступити свим приватним члановима основне класе.

Декларисали смо објекат изведене класе, а затим позвали методе из основне класе, тј. СетЛенгтх () и сетБреадтх ().

#инцлуде

користећи именски простор стд;

цласс Рецтангле_Цласс
{
приватно:
интдужине;
интширина;
јавности:
Рецтангле_Цласс();
Рецтангле_Цласс(инттхе,интб);
Рецтангле_Цласс(Рецтангле_Цласс&р);
интгетЛенгтх()
{
повратакдужине;
}
интгетБреадтх()
{
повратакширина;
}
празнинасетЛенгтх(инттхе);
празнинасетБреадтх(интб);
интобласти();
};

цласс Цубе_Цласс:публиц Рецтангле_Цласс
{
приватно:
интвисина;
јавности:
Цубе_Цласс(интх)
{
висина=х;
}
интгетХеигхт()
{
повратаквисина;
}
празнинасетХеигхт(интх)
{
висина=х;
}
интволумен()
{
повратакгетЛенгтх()*гетБреадтх()*висина;
}
};


Рецтангле_Цласс::Рецтангле_Цласс()
{
дужине=1;
ширина=1;
}
Рецтангле_Цласс::Рецтангле_Цласс(инттхе,интб)
{
дужине=тхе;
ширина=б;
}
Рецтангле_Цласс::Рецтангле_Цласс(Рецтангле_Цласс&р)
{
дужине=р.дужине;
ширина=р.ширина;
}
празнинаРецтангле_Цласс::сетЛенгтх(инттхе)
{
дужине=тхе;
}
празнинаРецтангле_Цласс::сетБреадтх(интб)
{
ширина=б;
}
интРецтангле_Цласс::области()
{
повратакдужине*ширина;
}

интглавни()
{
Цубе_Цласс ц(8);
ц.сетЛенгтх(12);
ц.сетБреадтх(9);
цена<<'Јачина звука је'<<ц.волумен()<<ендл;
}

Закључак:

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