Certo che puoi mettere campi (di istanza, di classe) all'interno della classe. Le interfacce non c'entrano in questo. Le interfacce servono per rappresentare a livello più astratto le operazioni che un oggetto deve poter fare (senza indicare però come) .. non quali dati deve contenere l'oggetto!
Questione "forse" posta un po' male. Se un metodo ha un parametro del tipo di una interfaccia, di norma è perché al metodo non interessa "sapere" quale è la implementazione e gli basta solo operare con i metodi della interfaccia e di conseguenza "accetta" quindi qualunque sua implementazione.
Se un metodo riceve un java.util.List (la interfaccia), allora si presume che gli vada bene ricevere una qualunque sua implementazione, ArrayList, LinkedList, CopyOnWriteArrayList, ecc..
No, "nì". Se fai così vai a "cablare" il metodo verso quella specifica implementazione. Andando quindi contro a quanto dicevo prima. Se un metodo riceve come parametro un tipo interfaccia, dovrebbe essere perché gli basta stare sul "generico", senza sapere quale è la implementazione.
Probabilmente devi ancora afferrare meglio a cosa servono le interfacce e come usarle.![]()


Rispondi quotando