C ++ paveldėjimas

C Inheritance



Paveldėjimas yra labai svarbi objektinio programavimo ypatybė. Tai leidžia programuotojui išvesti klasę iš esamos klasės. Tai labai naudinga ypač dideliame sudėtingame projekte, nes tai leidžia programuotojui pakartotinai naudoti kodą.

Šiame straipsnyje aptarsime paveldėjimo koncepciją C ++ programavime. Darbo pavyzdžiais paaiškinsime draugo funkcijos sąvoką C ++.







Kodėl paveldėjimas?

Paveldėjimas leidžia sukurti naują klasę arba išvestinę klasę iš kitos klasės ar pagrindinės klasės. Išvestinė klasė arba antrinė klasė turės visas tėvų klasės arba pagrindinės klasės funkcijas. Mes galime pakartotinai naudoti kodą paveldėdami.



Paveldėjimo tipas

Yra keletas paveldėjimo tipų:



  1. Paprastas/pavienis paveldėjimas
  2. Hierarchinis paveldėjimas
  3. Daugiapakopis paveldėjimas
  4. Daugkartinis paveldėjimas

Šiame straipsnyje mes svarstysime tik paprastą/vienintelį paveldėjimą.





1 pavyzdys:

Dabar pažvelkime į pavyzdinę programą, kad suprastume paveldėjimo sąvoką C ++. Mes nustatėme bazinę klasę ir iš jos išvedėme kitą klasę. Todėl išvestinė klasė turės pagrindinės klasės ypatybes (narius ir funkcijas).

#įtraukti

naudojant vardų srities standartą;

klasė Base_Class
{
viešas:
tarpti;
tuštumaekranas()
{
kaina<< „Bazinės klasės ekranas“ <<i<<endl;
}

};

klasė Derived_Class:public Base_Class
{
viešas:
tuštumaRodyti()
{
kaina<< „Išvestinės klasės šou“ <<endl;
}
};

tarptpagrindinis()
{
Derived_Class dc;
dc.i = 100;
dc.ekranas();
dc.Rodyti();

grįžti 0;
}



2 pavyzdys:

Tai dar vienas C ++ paveldėjimo pavyzdys. Šiame pavyzdyje pamatysime, kaip konstruktoriai vadinami kuriant išvestinį klasės objektą.

Kaip matote toliau, mes apibrėžėme du bazinės klasės konstruktorius ir tris išvestinius klasės konstruktorius. Iš toliau pateiktos išvesties galite aiškiai pastebėti, kad prieš iškviečiant išvestinį klasės konstruktorių, pirmiausia iškviečiamas bazinės klasės konstruktorius.

#įtraukti
naudojant vardų srities standartą;

klasė Base_Class
{
viešas:
Base_Class()
{
kaina<< „Base_Class - be parametrų“ <<endl;
}
Base_Class(tarptx)
{
kaina<< 'Base_Class - Parameters:' <<x<<endl;
}
};

klasė Derived_Class:public Base_Class
{
viešas:
Derived_Class()
{
kaina<< „Derived_Class - be parametrų“ <<endl;
}
Derived_Class(tarptir)
{
kaina<< 'Derived_Class - Parameters:' <<ir<<endl;
}
Derived_Class(tarptx,tarptir):Base_Class(x)
{
kaina<< „Parametras Derived_Class:“ <<ir<<endl;
}
};

tarptpagrindinis()
{
Išvestinė_ klasė d(7,19);
}

3 pavyzdys:

Šiame pavyzdyje pamatysime, kaip galima naudoti išvestinius klasės objektus.

Kaip matote, yra apibrėžtos dvi klasės: „Rectangle_Class“ ir „Cube_Class“. „Rectangle_Class“ yra pagrindinė klasė, iš kurios išvesta klasė, t. Y. „Cube_Class“. Todėl mes paveldime funkcijas iš „Rectangle_Class“ į „Cube_Class“.

Taip pat galite pastebėti, kad paveldime „Cube_Class“ su viešos prieigos valdymu. Tai reiškia, kad išvestinė klasė gali pasiekti visus ne privačius bazinės klasės narius.

Mes paskelbėme išvestinės klasės objektą ir tada iškviečiame metodus iš bazinės klasės, ty setLength () ir setBreadth ().

#įtraukti

naudojant vardų srities standartą;

klasė Stačiakampis_klasė
{
privatus:
tarptilgio;
tarptplotis;
viešas:
Stačiakampis_klasė();
Stačiakampis_klasė(tarptį,tarptb);
Stačiakampis_klasė(Stačiakampis_klasė&r);
tarptgetLength()
{
grįžtiilgio;
}
tarptgetBreadth()
{
grįžtiplotis;
}
tuštumasetLength(tarptį);
tuštumasetBreadth(tarptb);
tarptsrityje();
};

klasė Cube_Class:public Rectangle_Class
{
privatus:
tarptaukščio;
viešas:
Cube_Class(tarpth)
{
aukščio=h;
}
tarptgetHeight()
{
grįžtiaukščio;
}
tuštumasetHeight(tarpth)
{
aukščio=h;
}
tarpttūrio()
{
grįžtigetLength()*getBreadth()*aukščio;
}
};


Stačiakampis_klasė::Stačiakampis_klasė()
{
ilgio=1;
plotis=1;
}
Stačiakampis_klasė::Stačiakampis_klasė(tarptį,tarptb)
{
ilgio=į;
plotis=b;
}
Stačiakampis_klasė::Stačiakampis_klasė(Stačiakampis_klasė&r)
{
ilgio=r.ilgio;
plotis=r.plotis;
}
tuštumaStačiakampis_klasė::setLength(tarptį)
{
ilgio=į;
}
tuštumaStačiakampis_klasė::setBreadth(tarptb)
{
plotis=b;
}
tarptStačiakampis_klasė::srityje()
{
grįžtiilgio*plotis;
}

tarptpagrindinis()
{
C kubas_klasė c(8);
c.setLength(12);
c.setBreadth(9);
kaina<<„Tūris yra“<<c.tūrio()<<endl;
}

Išvada:

Šiame straipsnyje aš paaiškinau paveldėjimo sąvoką C ++ . „C ++“ palaiko įvairių tipų paveldėjimą, įskaitant daugialypį paveldėjimą (t. Y. Paveldi funkcijas iš kelių bazinių klasių ar tėvų klasės). Tačiau, kad būtų paprasčiau, aš čia apsvarstiau tik vieną paveldėjimą. Parodžiau tris darbinius pavyzdžius, kaip paaiškinti, kaip galime panaudoti paveldėjimą programuojant C ++ ir pakartotinai naudoti kodą. Be to, tai yra labai naudinga C ++ funkcija.