Video: Programmare in C++ [Lezione 1 - Le basi] (Come creare un programma) 2024
I nheritance in C ++ la capacità di una classe di ereditare capacità o proprietà da un'altra classe. L'ereditarietà è un concetto comune. Si ereditano certe proprietà dalla classe Umane, come la mia capacità di conversare (più o meno) in modo intelligente e la mia dipendenza dall'aria, dall'acqua e dal nutrimento a base di carboidrati (un po 'troppo dipendente da quest'ultimo).
Queste proprietà non sono uniche per l'uomo. La classe Umano eredita le dipendenze dall'aria, dall'acqua e dal nutrimento dalla classe Mammifero, che l'ha ereditata dalla classe Animale.
La capacità di trasmettere proprietà è potente. Ti consente di descrivere le cose in modo economico. Ad esempio, se qualcuno chiede "Cos'è un'anatra? "Puoi dire:" È un uccello che fa il ciarlatano. "
Nonostante ciò che si potrebbe pensare, questa risposta trasmette una quantità considerevole di informazioni. Lui sa cos'è un uccello, e ora conosce tutte le stesse cose di un'anatra più la proprietà aggiuntiva dell'anatra di "ciarlataneria". “
Le lingue orientate agli oggetti (OO) esprimono questa relazione di ereditarietà consentendo ad una classe di ereditare da un'altra. I linguaggi OO possono generare un modello più vicino al mondo reale (ricordate quello che è il mondo reale!) Rispetto al modello generato da linguaggi che non supportano l'ereditarietà.
C ++ consente ad una classe di ereditare un'altra classe come segue:
classe Student {}; class GraduateStudent: public Student {};
Qui, un GraduateStudent eredita tutti i membri di Studente. Quindi, GraduateStudent IS_A Studente . (La capitalizzazione di IS_A sottolinea l'importanza di questa relazione.) Naturalmente, GraduateStudent può contenere anche altri membri che sono unici per un L'ereditarietà è stata introdotta in C ++ per diversi motivi. Naturalmente, la ragione principale è la capacità di esprimere la relazione di ereditarietà. Un motivo minore è ridurre la quantità di digitazione. Supponiamo che tu abbia una classe Student, e ti venga chiesto di aggiungere una nuova classe chiamata GraduateStudent. L'ereditarietà può ridurre drasticamente il numero di cose che devi mettere in classe. Tutto ciò di cui hai veramente bisogno nella classe GraduateStudent sono cose che descrivono le differenze tra studenti e dottorandi. Un altro effetto collaterale ha a che fare con la modifica del software. Supponi di ereditare da una classe esistente. Successivamente, si scopre che la classe base non fa esattamente ciò di cui la sottoclasse necessita.O forse la classe ha un bug. La modifica della classe base potrebbe interrompere altri codici che utilizzano quella classe base. La creazione e l'utilizzo di una nuova sottoclasse che sovraccarica la funzionalità errata con una versione corretta risolve il problema senza causare ulteriori problemi a qualcun altro.