Il vero scopo delle interfacce

di il
7 risposte

Il vero scopo delle interfacce

Sto cercando di capire che senso hanno le interfacce in Java, continuo a cercare in tutorial, libri, video e devo ancora capire perchè dovrei usare un'interfaccia... mi spiego meglio:
Se creo un interfaccia ho praticamente una classe astratta che non implementa niente, quindi perchè estenderla e non creare direttamente una classe che contemporaneamente dichiara e implementa i metodi?

7 Risposte

  • Re: Il vero scopo delle interfacce

    rudj87 ha scritto:


    Sto cercando di capire che senso hanno le interfacce in Java, continuo a cercare in tutorial, libri, video e devo ancora capire perchè dovrei usare un'interfaccia... mi spiego meglio:
    Se creo un interfaccia ho praticamente una classe astratta che non implementa niente, quindi perchè estenderla e non creare direttamente una classe che contemporaneamente dichiara e implementa i metodi?
  • Re: Il vero scopo delle interfacce

    No, scusa ma sono un po' duro a capire nel tuo esempio, la classe che estende persona e implementa l'interfaccia, non potrebbe dichiarare e implementare direttamente il metodo getStipendio?
    questo:
    
    public interface Impiegato {
    	public int getStipendio()
    }
    
    non è tutto codice scritto in più inutilmente dato che poi nella classe derivata da Persona dovrò riscrivere(sia implementando Impiegato che non):
    
    public int getStipendio()
    {
           return stipendio;
    }
    
  • Re: Il vero scopo delle interfacce

    Aspetta.

    se tu implementi l'interfaccia devi implementare getstipendio. altrimenti no!!! o meglio, puoi ma è una tua scelta.

    il motivo è che la classe che implementa stipendio tu puoi trattarla come una classe stipendio, quindi tu puoi fare in un ipotetico giro un controllo del tipo
    
    private boolean isImpiegato(Persona p){
    if(p instanceof Impiegato) return true;
    return false;
    }
    questo è un esempio per farti capire le potenzialità. Se vuoi approfondire studiati un pò come funzionano i Comparator di java, e pensa a come potresti implementarlo con le interfacce.

    altro utilizzo (che è poi quello che istintivamente ti viene in mente, almeno a me) qui
  • Re: Il vero scopo delle interfacce

    Il link che mi hai mandato non riesco a capirlo, sono agli inizi degli studi java, quindi parole come pattern, transient, metadata non so ancora cosa siano, ma non importa, approfondendo su Comparable come da te suggerito sto iniziando a capire...
    Praticamente ad esempio con Comparable.compareTo() posso confrontare 2 oggetti di 2 classi diverse SE implementano la stessa interfaccia, giusto?
  • Re: Il vero scopo delle interfacce

    rudj87 ha scritto:


    il link che mi hai mandato non riesco a capirlo, sono agli inizi degli studi java, quindi parole come pattern, transient, metadata non so ancora cosa siano, ma non importa, approfondendo su Comparable come da te suggerito sto iniziando a capire...
    Praticamente ad esempio con Comparable.compareTo() posso confrontare 2 oggetti di 2 classi diverse SE implementano la stessa interfaccia, giusto?
    esattamente. questo perchè se implementano quella interfaccia avranno sicuramente ALMENO il metodo dell'interfaccia, e quindi dovrai usare quello per confrontarlo
  • Re: Il vero scopo delle interfacce

    Ok, chiaro, grazie
  • Re: Il vero scopo delle interfacce

    Le interfacce possono essere viste come un "contratto" e tutte le classi che implementano l'interfaccia devono (dovrebbero) rispettare tale contratto.
    Es: hai un'interfaccia così:
    
    public interfacce ISorter {
      public void sort(int[] array);
    }
    Tutte le classi che implementano tale interfaccia si impegnano a fornire un'implementazione per l'ordinamento di un array..
    Se poi per qualche motivo hai bisogno di una qualsiasi classe che offra tale funzionalità potrai riferirti ad essa tramite la sua interfaccia:
    
    ISorter sorter;
    //ottieni una qualsiasi istanza di classe che implementa isorter
    sorter.sort(array);
    
Devi accedere o registrarti per scrivere nel forum
7 risposte