Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2003
    Messaggi
    726

    [JAVA] Istanziare una interfaccia. Perchè?

    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!

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,280

    Re: [JAVA] Istanziare una interfaccia. Perchè?

    Originariamente inviato da Downloader
    Io sapevo che solo le classi potevano essere istanziate, come mai anche le interfaccie?
    Le interfacce NON sono istanziabili. Una interfaccia è da vedere (concettualmente, ovvio) come se fosse una classe astratta al 100% cioè in cui tutti i metodi sono astratti.

    Facendo:
    Interfaccia1 i = new Classe1();

    NON hai istanziato una interfaccia. Hai istanziato un oggetto di tipo Classe1 che implementa Interfaccia1 ed hai assegnato il reference ad una variabile di tipo Interfaccia1.

    Dichiarare una variabile (locale, di istanza/classe, ecc...) di un tipo di una interfaccia o di una classe astratta è assolutamente lecito e corretto. Se così non fosse, non si potrebbero invocare i metodi della interfaccia o della classe astratta in modo "polimorfico".
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.