GeeksforGeeks (Suomi)

valmiudet luokan saada ominaisuudet ja ominaispiirteet toinen luokka on nimeltään Perintö. Perintö on yksi olio-ohjelmoinnin tärkeimmistä piirteistä.
alaluokka: luokasta, joka perii ominaisuuksia toisesta luokasta, käytetään nimitystä alaluokka tai johdettu luokka.
Superluokka: luokkaa, jonka ominaisuudet periytyvät alaluokittain, kutsutaan Perusluokaksi tai superluokaksi.

artikkeli on jaettu seuraaviin alateksteihin:

  1. miksi ja milloin perintöä käytetään?,
  2. Tilat Perintö
  3. Tyypit Perintö

Miksi ja milloin käyttää perintö?

harkitse ajoneuvoryhmää. Sinun täytyy luoda luokat Bussi, Auto ja kuorma. Menetelmät fuelAmount (), kapasiteetti (), applyBrakes () ovat samat kaikille kolmelle luokalle., Jos luomme nämä luokat välttää perintö sitten meidän täytyy kirjoittaa kaikki nämä toiminnot kussakin kolme luokat kuten on esitetty kuva alla:

Voit selvästi nähdä, että edellä prosessissa päällekkäistä saman koodin 3 kertaa. Tämä lisää virheiden ja tietojen irtisanomisen mahdollisuuksia. Tällaisen tilanteen välttämiseksi käytetään perintöä., Jos luomme luokan Ajoneuvon ja kirjoittaa nämä kolme toimintoja ja perivät loput luokat ajoneuvon luokka, sitten voimme yksinkertaisesti välttää päällekkäisiä tietoja ja lisätä uudelleen käytettävyys. Katso alla kaavio, jossa kolme luokkaa ovat perineet ajoneuvon luokka:

Käyttämällä perintö, meidän täytyy kirjoittaa toiminnot vain yhden kerran sijaan kolme kertaa, koska olemme perineet loput kolme luokkaa perustaa luokan(Ajoneuvon).,

Täytäntöönpano perintö C++: luoda sub-luokka, joka periytyy base class meidän täytyy seurata alla syntaksi.
Syntax:

class subclass_name : access_mode base_class_name{ //body of subclass};

Tässä, subclass_name on nimi sub class, access_mode on tila, jossa haluat perivät tämän luokan esimerkiksi: julkinen, yksityinen jne. ja base_class_name on sen perusluokan nimi, josta haluat periä alaluokan.
Huomautus: johdettu luokka ei peri pääsyä yksityistietojen jäseniin., Se kuitenkin perii täyden emokohteen, joka sisältää kaikki yksityiset jäsenet, jotka kyseinen luokka ilmoittaa.



Lähtö:

Child id is 7Parent id is 91

edellä ohjelma ”Lapsi” luokka on julkisesti periytyvät ”Vanhempi” luokan niin, että julkisen tiedon jäsenet luokan ”Vanhempi” on myös perivät luokan ”Lapsi”.

Tilaa Perintöveron

  1. Julkinen tila: Jos johdamme sub class julkinen perustaa luokan., Sitten yleisön jäsen perustaa luokan on tullut julkiseksi vuonna johdettu luokka ja suojattuja jäseniä, perustaa luokan on tullut suojattu johdettu luokka.
  2. Suojattu tila: jos johdamme alaluokan suojatusta perusluokasta. Silloin sekä julkinen jäsen että perusluokan suojatut jäsenet tulevat suojelluiksi johdetussa luokassa.
  3. Yksityistila: jos johdamme alaluokan yksityisestä perusluokasta. Silloin sekä julkinen jäsen että suojellut perusluokan jäsenet tulevat yksityisiksi johdetussa luokassa.,

Huom : yksityiset jäsenet base class ei voida suoraan käyttää, vuonna johdettu luokka, kun taas protected jäsenet voivat olla suoraan käsiksi. Esimerkiksi luokat B, C ja D sisältävät kaikki muuttujat x, y ja z alla olevassa esimerkissä. Kyse on vain pääsystä.,

alla olevassa taulukossa on yhteenveto edellä mainitut kolme tilaa ja osoittaa pääsy specifier jäsenten base class sub class kun johdettu public, protected ja private tilassa:

Tyypit Perintö C++

erikoistapaus hybridi perintö : Multipath perintö:
johdettu luokka, jossa on kaksi base luokat ja nämä kaksi pohja luokilla on yhteinen kantaluokka on nimeltään multipath perintö. Moniselitteisyys voi arrisoida tämän tyyppisessä perinnössä.,

Harkitse seuraavia program:



Lähtö:

A from ClassB : 10A from ClassC : 100B : 20C : 30D : 40

yllä olevassa esimerkissä, sekä luokan b & ClassC periä ClassA, he molemmat ovat yhden kopion ClassA. Kuitenkin ClassD periä sekä luokan b & ClassC, siksi ClassD on kaksi kopiota ClassA, yksi luokan b ja toinen ClassC.,
Jos meidän täytyy käyttää tietoja jäsen a ClassA kautta kohde ClassD, meidän täytyy määrittää polku, josta pääsee, onko tämä luokan b tai ClassC, bco ’ z compiler ei voi erottaa toisistaan kaksi kappaletta ClassA vuonna ClassD.
On olemassa 2 tapoja välttää tämä epäselvyys:

  1. Käytä scope resolution operator
  2. Käytä virtuaalinen perustaa luokan

Vältetään epäselvyys käyttäen scope resolution operator:
scope resolution operator emme voi manuaalisesti määrittää polku, josta tiedot jäsenelle voidaan käyttää, kuten on esitetty selvitys 3 ja 4 yllä olevassa esimerkissä.,

obj.ClassB::a = 10;
obj.ClassC::a = 100;



Huomautus : on olemassa kaksi kappaletta ClassA vuonna ClassD.,
Vältetään epäselvyys käyttämällä virtuaalinen perustaa luokan:



tuloksena on:

A : 100B : 20C : 30D : 40

edellä esimerkki, ClassD on vain yksi kopio ClassA, siksi lausunto 4 ylikirjoittaa arvo, annetaan lausunto 3.

tämän artikkelin on kirjoittanut Harsh Agarwal. Jos pidät GeeksforGeeks ja haluat edistää, voit myös kirjoittaa artikkeli käyttää contribute.geeksforgeeks.org tai lähetä artikkeli [email protected]., Katso artikkeli esiintyy GeeksforGeeks pääsivulla ja auttaa muita nörttejä.

Attention reader! Älä lopeta oppimista nyt. Saada käsiinsä kaikki tärkeät C++ – Säätiö ja STL käsitteitä C++ – Säätiö ja STL kursseja opiskelija-ystävällinen hinta ja tullut teollisuuden valmis.

Artikkeli Tagit :

C++
Käytännössä Tagit :

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *