> For the complete documentation index, see [llms.txt](https://checksound.gitbook.io/corsojava/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://checksound.gitbook.io/corsojava/polimorfismo/pit-stop.md).

# Pit stop

Esercitazioni: <http://www3.ntu.edu.sg/home/ehchua/programming/java/J3f_OOPExercises.html>

Cosa abbiamo visto finora:

* Ereditarietà:
  * superclasse/sottoclasse;
  * costruttori: multipli, utilizzo **this** nel costruttore, utilizzo di **super** nel costruttore nella sottoclasse, costruttore di default, la catena dei costruttori;
  * utilizzo di **super** per chiamare un metodo della superclasse da una sottoclasse;
* Polimorfismo:
  * fare degli esempi per spiegare il polimorfismo;
  * il concetto del late binding;
  * *upper cast* vs *downcast*;

| Argomento                                                                                                                                       | Esempio                                                             |
| ----------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------- |
| Polimorfismo: esempio con `Shape` e `Instrument`                                                                                                | <https://github.com/checksound/Polimorfismo>                        |
| Costruttori multipli, sottoclassi ed utilizzo di `super()` per richiamare il costruttore della superclasse. Esempio  `Circle` e `GraphicCircle` | <https://github.com/checksound/EsempioCostruttoriEreditarieta>      |
| **Overridding** dei metodi, esempio `Circle` e `Cylinder` e utilizzo di **super** per invocare metodo della superclasse.                        | <https://github.com/checksound/MethodOverridding-CircleAndCilinder> |
| Esempio per evidenziare il late binding: le sottoclassi di `Shape` generate random a runtime.                                                   | <https://github.com/checksound/PolimorfismoRandomShapes>            |
| Polimorfismo utilizzato per costruire un metodo di sort() generico.                                                                             | <https://github.com/checksound/EsempioPolimorfismoComparable>       |
| Esempio su Polimorfismo e downcast                                                                                                              | <https://github.com/checksound/EsempioGestioneTemperatura>          |
