Kaikki mitä sinun tarvitsee tietää perinnöstä C ++: ssa



Tämä artikkeli antaa sinulle yksityiskohtaisen ja kattavan tiedon perinnöstä C ++: ssa, sen eri tyypeistä ja niiden toteuttamisesta.

C ++ on olio-orientoitu kieli. Tiedonotto, polymorfismi, kapselointi ja perintö ovat OOP: n kulmakiviä. Tässä viestissä ymmärrämme, mikä on perintö? Perintötyypit C ++: ssa ja kaikki siihen liittyvät tarvittavat käsitteet alusta alkaen. Lopulta tarkastelemme myös tämän tehokkaan konseptin haittapuolta ja yritämme ratkaista sen.

Mikä on perintö C ++: ssa

Perintö on yksi tehokkaimmista ja yleisimmin käytetyistä C ++ - tai minkä tahansa muun olio-orientoidun kielen käsitteistä. Tämän käsitteen ymmärtäminen vaatii vähän tietoa luokista ja esineistä. Perimällä voimme luoda luokan, joka koostuu yleisistä menetelmistä ja määritteistä. Tämän luokan voivat periä muut luokat, jotka sisältävät tarkempia menetelmiä.





Perintö C ++: ssa

Tällöin meidän ei tarvitse kirjoittaa samoja toimintoja uudestaan ​​ja uudestaan, mikä säästää aikaa ja lisää koodin luettavuutta.



Syntaksi:

luokka johdettu_luokka: access_type pohja_luokka {// luokan runko}

Perusluokka: Luokkaa, joka koostuu kaikista yleisistä menetelmistä ja määritteistä, jotka muut luokat voivat jakaa koodin luettavuuden parantamiseksi, kutsutaan perusluokaksi.

Johdettu luokka: Luokkaa, joka koostuu tarkemmista menetelmistä ja perii luokan, kutsutaan johdetuksi luokaksi. Johdettu luokka voi olla myös jonkin toisen johdetun luokan perusluokka.



Jos luomme luokan XYZ, jossa on joitain määritteitä ja menetelmiä. Nyt luokan opiskelijalla on joitain muita ominaisuuksia, mutta se sisältää myös XYZ-luokan elementit ja sama koskee myös tiedekunnan luokkaa. Katsotaan kaavio:

Joten opiskelija ja tiedekunnan luokka perivät XYZ: n.

Pääsyn määrittelijä Ymmärsimme, kuinka luokka voi periä toisen luokan. Jotkut ihmiset saattavat kuitenkin sanoa, että se on vaarallinen menetelmä, koska kaikki perusluokan tai vanhempaluokan ominaisuudet ja menetelmät jaetaan alaluokan tai johdetun luokan kanssa. Esimerkiksi, jos luokka ”Pankki” periytyvät luokassa ”asiakkaat” ja ”sijoittajat”. Luokan ”Pankki” määritteet, kuten ”vaultpassword”, muut asiakaskohtaiset tiedot ja yksityiset tiedot, jaetaan ”asiakas” - ja ”sijoittaja” -luokan kanssa, mikä on vaarallista.

Yllä olevan ongelman ratkaisemiseksi C ++ käyttää pääsyn määrittelijöitä rajoittamaan perusluokan määritteiden pääsyn johdettuun luokkaan. C ++: ssa on yhteensä 3 tyyppisiä käyttöoikeuksien määrittelijöitä

  1. Julkinen
  2. Yksityinen
  3. Suojattu

Alla oleva taulukko antaa sinulle hyvän käsityksen siitä, minkä tyyppisiä tietoja johdettu luokka voi käyttää erilaisten käyttöoikeuksien määrittelijöiden mukaan.

Access Specifier Julkiset tiedot Yksityiset tiedot Suojattu data
Yksityinen Ei perittyEi perittyEi peritty
Suojattu Suojattu Yksityinen Suojattu
Julkinen Julkinen Yksityinen Suojattu

Yksi perintö

Yksittäistä perintöä voidaan pitää pelkkänä vaniljan muodossa. Yhdessä perinnössä yksi luokka perii perusluokan.

#insulje nimitilan käyttäminen vakioluokka Juna {int Pyörien lukumäärä int Valmentajien lukumäärä public: void Junainfo (int n, int m) {Pyörän numero = n Coachaches = m} void showinfo () {cout<Tätä perintötapausta kutsutaan monitasoiseksi perinnöksi. Ensimmäisen ja viimeisen luokan välinen luokka tunnetaan myös välipohjaluokana.Mitä luulet, voiko viimeinen luokka periä ensimmäisen luokan jäsenet? Kyllä se voi

#include nimitilan käyttäminen vakioluokka Ensimmäinen {suojattu: int julkinen: void getinfofirst (int x) {a = x} void showinfofirst () {std :: cout<< 'Value of a = ' < 

Tuotos:

Arvo a = 10

B: n arvo = 20

Arvo c = 30

Arvo d = 50

python-luokka __init__

Hierarkkinen perintö

Tiettyjä ongelmia ei voida ratkaista yhden tai monitasoisen perinnön avulla. Hierarkkisessa perinnössä useampi kuin yksi luokka perii yhdestä perusluokasta.

#insulje nimitilan käyttäminen vakioluokka College {public: College () {cout<< 'We are in class College' << endl } } class Student: public College { } class Faculty: public College { } int main() { Student student Faculty faculty return 0 }

Tuotos:

Olemme luokassa College

Olemme luokassa College

Moninkertainen perintö C ++: ssa

Hierarkkisessa perinnössä nähtiin, että yhdellä perusluokalla oli enemmän kuin yksi johdettu luokka. Useassa perinnössä yhdessä johdetussa luokassa on enemmän kuin yksi perusluokka.

#include nimitilan käyttäminen vakioluokka Yksi {suojattu: int julkinen: void getinfoOne (int x) {a = x}} luokka Kaksi {suojattu: int b julkinen: void getinfoTwo (int y) {b = y}} luokka Pää: julkinen Yksi, julkinen Kaksi {public: void Display () {std :: cout<< 'Value of a = ' < Tässä vaiheessa meillä on hyvä käsitys kaikesta C ++: ssa käytetystä perinnöstä. Mutta odota, mitä jos haluamme käyttää kahta erilaista perintötyyppiä? Onko se mahdollista? Kyllä, se on mahdollista hybridiperinnön avulla. Hybridi-perinnössä yhdistämme 2 erilaista perintötyyppiä. Esimerkiksi- Monitasoinen ja moniperintö, hierarkkinen ja moniperintö jne.

#include nimitilan käyttäminen std class World {suojattu: int a public: void getinfoWorld (int x) {a = x}} -luokka Manner: public World {suojattu: int b public: void getinfoContinent (int y) {b = y}} luokka Maa {suojattu: int d public: void getinfoCountry (int m) {d = m}} luokka Australia: julkinen maanosa, julkinen maa {public: void Display () {std :: cout<< 'Value of a = ' < 

Ymmärretään yllä oleva kaavio, joka auttaa meitä ymmärtämään timanttiongelman. luokka B ja luokka C perivät luokasta A, joten sekä luokassa A että luokassa B on luokan A määritteitä ja menetelmiä, jos luokassa D periytyy sekä luokan B että luokan C. luokassa D on kaikki luokan B ja luokan C ominaisuudet Siinä on myös kaikki luokan A attribuutit, jotka on peritty luokassa B ja C, joten jos teemme luokan D objektin ja kutsumme luokan A menetelmää, syntyy epäselvä tilanne ja kääntäjä sekoitetaan mistä sen tulisi olla luokan A menetelmä luokasta B tai luokka D.

Tämän epäselvyyden ratkaisemiseksi käytämme virtuaalisen perusluokan konseptia. Kun teemme perusluokasta virtuaalisen perusluokan, peritään vain yksi kopio kyseisestä luokasta riippumatta virtuaalisen perusluokan ja johdetun luokan välisten polkujen määrästä.

luokka A {} luokka B: virtuaalinen julkinen A {} luokka C: virtuaalinen julkinen A {} luokka D: julkinen C, julkinen D {}

Tällä tavoin olemme päättäneet tämän perintö C ++ -artikkelissa. Jos haluat oppia lisää, tutustu Edureka, luotettava verkko-oppimisyritys. Edurekan Java J2EE- ja SOA-koulutus- ja sertifiointikurssit on suunniteltu kouluttamaan sekä ydin- että edistyneitä Java-konsepteja sekä erilaisia ​​Java-kehyksiä, kuten Hibernate & Spring.

Onko sinulla kysymys meille? Mainitse se tämän blogin kommenttiosassa ja otamme sinuun yhteyttä mahdollisimman pian.