C ++ öröklődés

C Inheritance



Az öröklődés az objektum-orientált programozás nagyon fontos jellemzője. Lehetővé teszi a programozó számára, hogy osztályt származtasson egy meglévő osztályból. Ez nagyon hasznos, különösen egy nagy összetett projektben, mert lehetővé teszi a programozó számára a kód újbóli használatát.

Ebben a cikkben a C ++ programozás öröklési koncepcióját fogjuk tárgyalni. A barátfüggvény fogalmát a C ++ nyelvben dolgozó példákkal magyarázzuk.







Miért az öröklődés?

Az öröklés lehetővé teszi új osztály vagy származtatott osztály létrehozását egy másik osztályból vagy alaposztályból. A származtatott osztály vagy a gyermekosztály a szülőosztály vagy az alaposztály összes funkciójával rendelkezik. Az öröklés segítségével újra felhasználhatjuk a kódot.



Az öröklődés típusa

Különböző típusú öröklődések léteznek:



  1. Egyszerű/egyszeri öröklődés
  2. Hierarchikus öröklődés
  3. Többszintű örökség
  4. Többszörös öröklődés

Ebben a cikkben csak az egyszerű/egyszeri öröklést fogjuk figyelembe venni.





1. példa:

Most nézzünk egy példaprogramot, hogy megértsük az öröklés fogalmát a C ++ nyelven. Mi definiáltunk egy alaposztályt, majd származtattunk belőle egy másik osztályt. Ezért a származtatott osztály az alaposztályból származó jellemzőkkel (tagokkal és függvényekkel) rendelkezik.

#befoglalni

névtér standard használatával;

osztály Base_Class
{
nyilvános:
intén;
üreskijelző()
{
költség<< 'Az alaposztály megjelenítése' <<én<<endl;
}

};

osztály Derived_Class:public Base_Class
{
nyilvános:
üreselőadás()
{
költség<< 'Származtatott osztály bemutatója' <<endl;
}
};

intfő-()
{
Derived_Class dc;
dc.én = 100;
dc.kijelző();
dc.előadás();

Visszatérés 0;
}



2. példa:

Ez egy másik példa az öröklődésre a C ++ nyelven. Ebben a példában látni fogjuk, hogyan hívják meg a konstruktorokat egy származtatott osztályobjektum létrehozásakor.

Amint az alábbiakban látható, két alaposztály -konstruktor és három származtatott osztálykonstruktor került meghatározásra. Az alábbi kimeneten jól látható, hogy az alaposztály konstruktorát hívják meg először, mielőtt a származtatott osztálykonstruktor meghívásra kerül.

#befoglalni
névtér standard használatával;

osztály Base_Class
{
nyilvános:
Base_Class()
{
költség<< 'Base_Class - Nincs paraméter' <<endl;
}
Base_Class(intx)
{
költség<< 'Base_Class - Parameters:' <<x<<endl;
}
};

osztály Derived_Class:public Base_Class
{
nyilvános:
Derived_Class()
{
költség<< 'Derived_Class - nincs paraméter' <<endl;
}
Derived_Class(intés)
{
költség<< 'Derived_Class - Parameters:' <<és<<endl;
}
Derived_Class(intx,intés):Base_Class(x)
{
költség<< 'A Derived_Class paramétere:' <<és<<endl;
}
};

intfő-()
{
Derived_Class d(7,19);
}

3. példa:

Ebben a példában látni fogjuk, hogyan használhatók a származtatott osztályobjektumok.

Amint láthatja, két osztály van definiálva: Téglalap_osztály és Kocka_osztály. A Rectangle_Class az az alaposztály, amelyből a származtatott osztály, azaz a Cube_Class származik. Ezért örököljük a funkciókat a Rectangle_Class -ról a Cube_Class -ra.

Azt is észreveheti, hogy a nyilvános hozzáférés -vezérléssel örököljük a Cube_Class osztályt. Ez azt jelenti, hogy a származtatott osztály hozzáférhet az alaposztály összes nem privát tagjához.

Kijelentettük a származtatott osztály objektumát, majd meghívjuk a metódusokat az alaposztályból, azaz setLength () és setBreadth ().

#befoglalni

névtér standard használatával;

osztály Téglalap_osztály
{
magán:
inthossz;
intszélesség;
nyilvános:
Téglalap_osztály();
Téglalap_osztály(intaz,intb);
Téglalap_osztály(Téglalap_osztály&r);
intgetLength()
{
Visszatéréshossz;
}
intgetBreadth()
{
Visszatérésszélesség;
}
üressetLength(intaz);
üressetBreadth(intb);
intterület();
};

osztály Cube_Class:public Rectangle_Class
{
magán:
intmagasság;
nyilvános:
Cube_Class(inth)
{
magasság=h;
}
intgetHeight()
{
Visszatérésmagasság;
}
üressetHeight(inth)
{
magasság=h;
}
inthangerő()
{
VisszatérésgetLength()*getBreadth()*magasság;
}
};


Téglalap_osztály::Téglalap_osztály()
{
hossz=1;
szélesség=1;
}
Téglalap_osztály::Téglalap_osztály(intaz,intb)
{
hossz=az;
szélesség=b;
}
Téglalap_osztály::Téglalap_osztály(Téglalap_osztály&r)
{
hossz=r.hossz;
szélesség=r.szélesség;
}
üresTéglalap_osztály::setLength(intaz)
{
hossz=az;
}
üresTéglalap_osztály::setBreadth(intb)
{
szélesség=b;
}
intTéglalap_osztály::terület()
{
Visszatéréshossz*szélesség;
}

intfő-()
{
Cube_Class c(8);
c.setLength(12);
c.setBreadth(9);
költség<<'Hangerő'<<c.hangerő()<<endl;
}

Következtetés:

Ebben a cikkben elmagyaráztam az öröklődés fogalmát C ++ . A C ++ támogatja az öröklődés különböző típusait, beleértve a többszörös öröklődést (azaz a funkciók öröklését több alaposztályból vagy szülőosztályból). Az egyszerűség kedvéért azonban itt csak az egyetlen öröklést vettem figyelembe. Három működő példát mutattam be, hogy elmagyarázzam, hogyan használhatjuk az öröklést a C ++ programozásban, és hogyan használhatjuk újra a kódot. Ezenkívül ez a C ++ nagyon hasznos tulajdonsága.