User Tools

Site Tools


appunti3s:ereditarieta1

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

appunti3s:ereditarieta1 [2020/06/08 22:19] (current)
Line 1: Line 1:
 +====== L'ereditarietà ======
 +È necessario usare l'ereditarietà quando le due classi devono:
 +  * avere gli stessi membri dato 
 +  * avere le stesse funzioni membro
 +  * un oggetto di tipo classe Derivata deve essere (allo stesso tempo) anche del tipo Base
 +    * cioè i puntatori (o reference) che uso per oggetti della Base possono puntare anche oggetti della Derivata
 +
 +{{:appunti3s:ereditarieta1.png?|}}
 +
 +====Definizioni delle classi====
 +La classe //Base// è contenuta nella classe //Derivata//, per questo motivo la classe Base deve essere già stata //definita//.
 +
 +Esempio corretto:
 +<code>
 +Class Base // Corretto
 +{
 +  //etc.
 +};
 +
 +class Derivata : public Base
 +{
 +  //etc.
 +};
 +</code>
 +
 +Esempio errato:
 +<code>
 +                    //ERRORE manca la definizione di Base (...include base.h)
 +Class Base; 
 +
 +class Derivata : public Base
 +{
 +  //etc.
 +};
 +</code>
 +  * La classe //Derivata// avrà come membri //private// gli stessi membri //private// della //Base//
 +  * La classe //Derivata// avrà come membri //public// sia i membri //public// che quelli //protected// della //Base//
 +
 +L'ereditarietà viene usata per ottenere:
 +  * la relazione di "[[appunti3s:relazioni_tra_classi#generalizzazione]]" tra classi
 +  * la relazione di "[[appunti3s:relazioni_tra_classi#realizzazione]]" (insieme all'uso di puntatori e classi astratte)
 +    * Questo argomento è affrontato nel paragrafo [[appunti3s:polimorfismo]].
  
appunti3s/ereditarieta1.txt · Last modified: 2020/06/08 22:19 (external edit)