Ciao a tutti,

ultimamente sto studiando Java e mi sono imbattuto in una potenzialità del linguaggio che fino a questo momento mi era sconosciuta: l'istanza di una interfaccia.
Mi spiego meglio con un codice esemplificativo:

codice:
public interface Interfaccia1
{
 public void metodo1();
 public void metodo2();
}

public class Classe1 implements Interfaccia1
{
 public void metodo1() {...}
 public void metodo2() {...}
 
 public int metodoClasse1() {...}
}
Come mai posso fare una cosa del genere?
codice:
Interfaccia1 i = new Classe1()
Io sapevo che solo le classi potevano essere istanziate, come mai anche le interfaccie?
E a scopo si può far ciò?
Mi potreste dare una spiegazione?


Grazie 1000!