This e super

  • La parola chiave this usata come nome di metodo obbligatoriamente nella prima riga del costruttore della stessa classe
  • La parola chiave super usata come nome di metodo obbligatorimente nella prima riga del costruttore permette di richiamare in costruttore della superclasse
  • Ogni sottoclasse deve esplicitamente definire un costruttore se la superclasse non fornisce un costruttore senza argomenti
    • Questo avviene se si definisce un costruttore con almeno un argomento ma non si definisce il costruttore senza argomenti

Nota bene

Anche le classi astratte possono avere costruttori

Perché?
  • PerchĂ© le classi astratte possono avere campi che vengono utilizzati da una sottoclasse

Differenza tra Overriding e Overloading

  • L’overriding consiste nel ridefinire un metodo con la stessa intestazione presente in una superclasse
  • L’overloading consiste nel creare un metodo con lo stesso nome, una intestazione diversa

Mantenere il contatto

  • Nell’overriding gli argomenti devono essere gli stessi

  • I tipi di ritorno devono essere compatibili (lo stesso tipo o una sottoclasse)

  • Non si può ridurre la visibilitĂ 

  • Nell’overloading i tipi di ritorno possono essere diversi

    • Ma non si può cambiare solo il tipo di ritorno
  • Si può variare la visibilitĂ  in qualsiasi direzione

VisibilitĂ 

  • Quattro possibilitĂ  per campi e metodi:
Private
  • Visibile solo all’interno della classe
Public
  • visibile a tutti [all’interno di un modulo, vedi Java >=9]
Default
  • visibile all’interno di tutte le classi del package
Protected
  • visibile all’interno di tutte le classi del package e delle sottoclassi (indipendentemente dal package)