Domanda Capire se un metodo deve essere statico o dinamico

Stato
Discussione chiusa ad ulteriori risposte.

PIPPOBAUDO

Utente Electrum
23 Marzo 2012
181
76
8
194
ad esempio io faccio un metodo per calcolare l'area di un quadrato:
int getArea(float lato){
return lato*lato;
}
e statico o dinamico?da cosa lo capisco?quali sono le differenze?
 
Per sapere se un metodo è statico basta vedere se contiene la keyword static:
Codice:
public static int metodo1() { ... }  // questo è statico
public int metodo2() { ... } // questo non è statico

Se il tuo metodo dipende dai valori dei campi (variabili della classe), non dev'essere statico; se il tuo metodo è completamente indipendente dalla classe, dovrebbe essere dichiarato statico.
Ad esempio:
Codice:
class Quadrato
{
    public int lato = 0;
    
    Quadrato(int _lato)
    {
        lato = _lato;
    }
    public static double getPigreco() // il pigreco è uguale per tutti i quadrati, non dipende dal mio oggetto
    {                                                           // tralascia il fatto che questo metodo in questa classe abbia poco senso
        return 3.14; 
    }

    public int getArea()  // l'area è diversa per ogni quadrato, non può essere un metodo statico
    {
        return lato*lato;
    }
}

Il tuo getArea dipende dall'oggetto? No, perché accetta il lato come parametro, ha tutte le informazioni necessarie per darti una risposta senza il bisogno di andare a guardare i campi della classe.

BTW: normalmente non si usa chiamare dinamici i metodi non statici.
 
  • Mi piace
Reazioni: PIPPOBAUDO
Stato
Discussione chiusa ad ulteriori risposte.