I metodi di una classe in Java
Cosa sono i metodi
I metodi sono funzioni associate a una classe in Java. Definiscono il comportamento di un oggetto.
Tipi di metodi
In Java esistono due tipi di metodo.
- I metodi di istanza. Valgono soltanto in alcune istanze e oggetti specifici.
- I metodi di classe. Questi metodi valgono per tutte le istanze della classe.
Come creare un metodo
Il metodo deve essere inserito dentro una classe.
Per prima cosa devo specificare il tipo di dato di output che il metodo restituirà. Ad esempio int, string, ecc.
Poi devo indicare il nome del metodo.
tipo nome(parametri) {
...
}
Per indicare un metodo di classe, devo aggiungere anche la parola static prima del tipo di dato in output.
static tipo nome(parametri) {
...
}
Tra parentesi tonde definisco i parametri in input del metodo.
Nota. Per ogni parametro devo specificare nelle parentesi tonde anche il tipo di dato ( es. int, string, ecc. ).
Le istruzioni del metodo devo invece inserirle tra le parentesi graffe.
Un esempio pratico
Creo una classe di nome prova
All'interno della classe inserisco un metodo.
- public class prova{
- public static void main(String []args){
- class prova {
- int somma(int a, int b) {
- int s=a+b;
- return s;
- }
- }
- }
- }
Il metodo si chiama somma() e restituisce un valore numerico intero.
I parametri di input del metodo sono due numeri interi (a,b).
Come si richiama il metodo?
Per usare il metodo associo un oggetto alla classe prova().
Posso così richiamare il metodo somma() della classe direttamente tramite l'oggetto.
- prova oggetto = new prova();
- int x=oggetto.somma(2,3);
- System.out.println(x);
Il risultato in output è
5
In pratica, l'oggetto eredita il metodo della classe.
E così via.
A cosa serve? Una volta definito il metodo nella classe posso usarlo in più oggetti diversi, senza doverlo definire per ciascuno di essi. E' uno dei vantaggi della programmazione orientata agli oggetti.
Le variabili e i parametri del metodo
Le variabili nel metodo sono variabili locali.
Possono anche avere gli stessi nomi delle variabili della classe ma occupano aree di memoria diverse.
Nota. E' comunque consigliabile usare nomi diversi. In alternativa, è utile specificare this alla variabile se appartiene al metodo (this.nomevariabile) o super se appartiene alla classe (super.nomevariabile).
Quando passo una variabile a un metodo tramite i parametri in input, il metodo riceve soltanto il valore corrente della variabile ma non il riferimento.
Quindi, se modifico la variabile all'interno del metodo, il suo valore effettivo nella classe non cambia.
Nota. Fanno eccezione a questa regola gli array. Quando sono passati come argomento, sono trasferiti come riferimento e non solo per valore. Pertanto, la modifica di un array in un metodo è effettiva anche nella classe.