metodi java

matteoc91

Utente Attivo
158
17
ho capito che per richiamare un metodo nel main devo fare <nomeclasse> <nomevariabile> = new <nomeclasse()> e poi <nomevariabile>.<metodo(argomenti)>
Attenzione che questo non è sempre vero. Quello che fai nel tuo esempio è il classico caso di creazione di un oggetto :)
Quando crei un oggetto lo devi dichiarare (<nomeclasse> <nomevariabile>) e poi lo inizializzi (<nomevariabile> = new <nomeclasse()>); tale inizializzazione avviene tramite un costruttore dell'oggetto; in poche parole un costruttore è un metodo interno alla classe <nomeclasse> della forma seguente:
Codice:
public <nomeclasse> ( <eventuali argomenti> ){
      <operazioni varie> ;
}
Quando esegui l'istruzione <nomeclasse> <nomevariabile> = new <nomeclasse()> stai in realtà eseguendo il costruttore di cui sopra. Se esso non è presente java non genera errore a run time in quanto, possiamo impropriamente dire, ne usa uno di default vuoto (non anticipo nulla perché sono cose che vedrai con calma più avanti).

Btw definendo all'interno della classe un metodo del tipo:
Codice:
public void risolviequazione(...){
    ...
}
stai in realtà definendo una procedura per le entità che avranno tipo <nomeclasse> (ovvero le azioni che possono compiere) :)
Come dicevo sopra non è detto che tu debba fare in questo modo, ci sono molte varianti. In breve:
Se crei un oggetto (come ad esempio hai fatto), questi potrà usare i metodi definiti nella classe di appartenenza per compiere azioni (come hai fatto nel tuo esempio quando scrivi <nomevariabile>.<metodo(argomenti)>); tali metodi sono quelli non statici. Se invece un metodo è dichiarato come statico non potrai scrivere <nomevariabile>.<metodo(argomenti)> perché il metodo diventa proprietario della classe che lo contiene e definisce (ovvero <nomeclasse>) e non delle entità create a partire dalla classe; in poche parole per poterlo utilizzare dovrai scrivere <nomeclasse>.<metodo(argomenti)>.

Il motivo per cui nel tuo esempio sei costretto a creare un oggetto per poter utilizzare il metodo dello stesso nel main è perché il metodo main è statico (come detto sopra non puoi chiamare metodi dinamici da metodi statici). Se invece provi a richiamare lo stesso metodo risolviequazione da un altro metodo della stessa classe (non statico) noterai che non ti serve creare un oggetto (a volte potrai trovare indicato this.<nome metodo(argomenti)>); il motivo è che quando richiami un metodo dinamico, lo stai facendo da un oggetto, quindi non ti serve riferirti nuovamente allo stesso (motivo per il quale spesso il this viene omesso; in realtà il motivo più frequente per cui viene utilizzato è ridurre l'ambiguità), a meno che obv tu non voglia riferirti ad un altro oggetto :)
 
  • Mi piace
Reazioni: Androidiano93

Entra

oppure Accedi utilizzando
Discord Ufficiale Entra ora!

Discussioni Simili