Commento al compito

  1. extends e implements sono diversi: una classe può estendere un'altra classe, un'interfaccia può estendere un'altra interfaccia, ma una classe non può estendere un'interfaccia
  2. Iterable e Iterator NON sono la stessa cosa 🙂
    Iterable è un'interfaccia.
    Iterable richiede di implementare un metodo che restituisce un Iterator e si chiama iterator<Tipo>(). Il metodo può anche solo restituire un oggetto che implementa un Iterator.
    L'oggetto Iterator può essere anche una classe innestata creata ad hoc, che implementa boolean HasNext() e Tipo Next().
  3. se devo dichiarare una proprietà valida per tutta l'interfaccia devo anche inizializzarla dentro l'interfaccia.
  4. se implemento un oggetto generics, i metodi che nell'interfaccia prendono T devono prendere un parametro Object, non T, a meno che T non estenda qualche altro tipo.