----- 15/6/05 ----- > Potrebbe chiarirmi quando i metodi e le variabili in java vanno > definiti statici? Non e' facile chiarire questa distinzione in poche righe. In sintesi: - I metodi "static" sono di fatto procedure nel senso tradizionale del termine, quello del linguaggio C, per intenderci, oppure come le "procedure" e "function" del Pascal; in particolare tutti i parametri compaiono all'interno delle parentesi. Esempi notevoli di metodi "static" in Java sono le funzioni matematiche della classe Math: Math.sin(...), Math.exp(...), ecc., dove il nome della classe serve solo ad individuare una particolare collezione di strumenti. - I metodi non "static", invece", sono propriamente metodi nel senso della programmazione orientata agli oggetti e possono essere invocati esclusivamente su una particolare istanza della classe che li definisce; in questo caso l'istanza (oggetto) in questione e' il parametro di riferimento e viene indicato prima del nome del metodo, separato da un punto. Un esempio e' il metodo length() della classe String: in questo caso String.length() non puo' essere utilizzato, ma e' necessario fare riferimento a un'istanza specifica di String come "pippo" .lenght() oppure u.length() dove u e' una variabile di tipo String. - Per quanto riguarda le variabili "static", l'unico caso che abbiamo considerato nel corso di Programmazione e' quello "static final" che in realta' introduce una costante (per esempio il valore di pi greco). Le variabili che non hanno l'attributo "static" sono invece variabili di istanza e sono definite (e distinte) per ciascuna istanza della classe che le definisce (ma non hanno senso indipendentemente da una particolare istanza); si tratta di gran lunga del caso piu' frequente nella programmazione orientata agli oggetti. ----- * -----