clasele derivate

clasele derivate. polimorfism
Clasa derivată poate fi văzută ca o extensie a unei clase existente. Clasa originală se numește bază sau părinte și derivatul - o subclasa sau descendent. O clasă derivată este o extensie sau modificarea clasei de bază. Având o clasă părinte, puteți utiliza o singură interfață pentru mai multe clase derivate.
Orice clasă poate fi un părinte, precum și orice clasă derivată va urma descrierea acestuia. Descendentul clasa poate avea caracteristici suplimentare în comparație cu clasa de bază. Clasa derivată poate modifica drepturile de acces pentru a adăuga noi elemente sau supraîncărcării metodele existente.
derivată sintaxa clasă:

Clasa de ImyaProizvodnogoKlassa: (public / privat / protejat)

Publicul cuvânt, modificatori privat și protejate sunt metode de clasă derivate pentru a avea acces la elemente ale clasei părinte. Modificatorul public nu se schimba tipul de acces, modificator privat face pentru toate elementele de tip clasă de bază de acces este privat și modificator protejat permite accesul derivat metode de clasă la elementele comune ale clasei de bază, dar neagă accesul la toate celelalte metode. Dacă doriți să modificați unele elemente de tipul de acces, au anunțat într-o clasă derivată din nou în secțiunea corespunzătoare.
Dacă clasa derivată are doar o singură clasă părinte, moștenirea se spune că este simplu, altfel cunoscut ca moștenire complexă. EXEMPLU moștenire complexă:

clasa C: A publică, B protejat;

funcţii virtuale
Metoda poate fi declarată ca virtuală. În acest caz, atunci când este invocată prin indicatorul de bază clasă va fi numită o metodă de clasă derivată.
exemplu:

// metoda clasă de bază virtuală

// metoda obișnuită a clasei de bază

clasă derivată: Baza publică

// clasă derivată metodă virtuală

// metoda obișnuită a clasei derivate

// defini un pointer la o clasă de bază

// initializeaza referința pointer la o clasă derivată

BP-> virt (); // apeleaza metoda virtuala Manuf. clasă.

BP-> nonVirt (); // apel clasă de bază metoda non-virtual.

Dacă aveți nevoie pentru a apela metoda virtuală în clasa de bază, puteți specifica numele clasei cu operațiunea de rezoluție domeniul de aplicare:

bp_> Baza :: virt (); // apeleaza metoda din clasa de bază virtuală.

prieten void ClassB :: FuncName (); // clasa prietenos
prieten void regularFunc (int); // functie prieten
>;

Cu privire la funcțiile prietenoase nu sunt afectate de specificatori de acces. Descrierile sunt prieten nu reciproc, adică, date de clasă nu devin disponibile la clasa, declare prietenos. Amabilitate nu este moștenită.

articole similare