Newsgroup: it.comp.java
Titolo: Interfacce...

In una interfaccia posso definire delle variabili, queste pero'
sono implicitamente final e static.
Il fatto che siano static puo' essere spiegato pensando ad
una interfaccia come una classe astratta che quindi non e'
istanziabile ma puo' avere degli attributi di classe.
Non riesco pero' a spiegarmi come mai debbano essere final,
mi sembra che l'astrazione cosi' venga troppo vincolata.
-- 
"Il soggetto va prima del pregiudicato, poi la congiuntivite
 e dopo la condizionale" - Francesco Totti

 Non riesco pero' a spiegarmi come mai debbano essere final,
Perche' altrimenti potresti cambiarne il valore e allora che senso
ha averle nell'interfaccia?
Davide

 averle nell'interfaccia?
scusa non riesco a capire...
i metodi sono astratti, le classi che implementano l'interfaccia 
possono definire a loro piacimento una propria realizzazione e 
allora perche' non permettere che ogni classe che implementa 
l'interfaccia possa definire un valore differente per un 
attributo intero per esempio?


 
...l'hai detto tu...la classe definirebbe un attributo...non
l'interfaccia.
Se una classe potesse fare una cosa simile (cioe' se gli attributi di un
interfaccia potessero essere semplicemente static), cosa accadrebbe alle
altre classi che implementano l'interfaccia? Cambierebbe anche per loro
il valore?
...decisamente troppe complicazioni...sarebbe praticamente
un'ereditarieta' multipla, invece le interfacce servono proprio ad
evitare i problemi di questo costrutto.
-- 
Lucio Benfante
Brainbench MVP for Java 1
http://www.brainbench.com
MyTranscript: 
http://www.brainbench.com/transcript.jsp?pid=167064

attributo intero per esempio?
La spiegazione superficiale è che, se leggi ad es. il Tutorial, non si 
parla di attributi, ma di costanti. Questo dovrebbe già chiarirti le idee.
Per superare questo problema (?), io adotterei il pattern dei JavaBean: 
dove useresti un attributo pubblico (!), usi invece una coppia di metodi 
set e get.
HTH
-- 
Ciao
	Fabrizio C.

attributo intero per esempio?
L'interfaccia contiene solo la visione esterna dell'oggetto. Non si
occupa della visione interna. Questo perchč chi usa l'interfaccia nel
dichiarare le variabili non vuole e non deve sapere come č
implementata. In pratica gli attributi sono invece variabili che
definiscono lo stato interno di un oggetto e quindi non devono essere
visibili a livello di interfaccia. Questo infatti limiterebbe il
programmatore che la implementa. Sarebbe costretto ad usare proprio
quella variabile che gli hanno dato nell'interfaccia. Le final static
invece hanno un senso. Possono infatti servire a definire meglio un
oggetto. Per esempio possono fissare dei limiti massimi e minimi per i
risultati di certe operazioni.
Se questa cosa non ti e' chiara allora probabilmente non ti e' chiaro
il concetto di interfaccia. Il mio prof. all'universita' non la chiama
interfaccia ma contratto. Lui dice che l'interfaccia definisce un
contratto con il cliente che ci ha commissionato l'oggetto. Quindi vi
devono essere riportate tutte le operazioni che il cliente vuole e
puo' fare con l'oggetto ma nessun particolare sull'implementazione.
Non a caso la parola chiave usata da java per questo scopo e':
implements. Se vuoi dichiarare delle variabili usa una classe astratta
e non un interfaccia.
--
Ciao.
Mario Maroncelli
mar...@mclink.it

 concetto di interfaccia.
certo non e' un argomento molto semplice ^_^ 
ma mi sto applicando ^_^


ma mi sto applicando ^_^
Hai ragione non e' un argomento semplice. Continua a chiedere finche'
non ti e' chiaro.


 Io mi chiedevo come mai un attributo fosse necessariamente final
Semplicemente perche' un'interfaccia puo' esporre costanti.
-- 
Life's something u don't get out alive..
ObjectZone - 
http://space.tin.it/computer/csadun

 non ti e' chiaro.
Diciamo che la cortina di fumo che ho nel cervello sta svanendo ^_^
Ho raccolto un bel po di materiale sulle interfacce e sto
studiando ^_^
Ne approfitto per ringraziare tutti per gli interventi, grazie a voi
credo di aver fatto un grosso passo avanti e ringrazio davide che mi
ha dato credo il giusto suggerimento. 
Inizialmente non avevo capito la sua risposta e poi pensandoci su mi
sono detto che se una classe che implementa una Interfaccia avesse la
possibilita' di cambiare lo stato dell'interfaccia allora che cappero
di astrazione e'? ^_^
Ecco spiegato il final, grazie a tutti di nuovo ^_^
