È necessario comprendere la differenza tra una classe e un'istanza di quella classe. Se vedi un'auto per strada, sai immediatamente che è un'auto anche se non riesci a vedere quale modello o tipo. Questo perché si confronta ciò che si vede con la classe "auto". La classe contiene quale è simile a tutte le auto. Pensalo come un modello o un'idea.
Allo stesso tempo, l'auto che vedi è un'istanza della classe "auto" poiché ha tutte le proprietà che ti aspetti: c'è qualcuno che la guida, ha un motore, ruote.
Quindi la classe dice "tutte le auto hanno un colore" e l'istanza dice "questa macchina specifica è rossa".
Nel mondo OO, si definisce la classe e all'interno della classe, si definisce un campo di tipo Color
. Quando la classe viene istanziata (quando crei un'istanza specifica), la memoria è riservata al colore e puoi assegnare a questa istanza specifica un colore. Poiché questi attributi sono specifici, non sono statici.
I campi e i metodi statici sono condivisi con tutte le istanze. Sono per valori specifici della classe e non di un'istanza specifica. Per i metodi, di solito si tratta di metodi di supporto globali (come Integer.parseInt()
). Per i campi, di solito sono costanti (come i tipi di auto, cioè qualcosa in cui hai un set limitato che non cambia spesso).
Per risolvere il problema, è necessario creare un'istanza di un'istanza (creare un oggetto) della classe in modo che il runtime possa riservare memoria per l'istanza (altrimenti, istanze diverse si sovrascriverebbero a vicenda che non si desidera).
Nel tuo caso, prova questo codice come blocco iniziale:
public static void main (String[] args)
{
try
{
MyProgram7 obj = new MyProgram7 ();
obj.run (args);
}
catch (Exception e)
{
e.printStackTrace ();
}
}
// instance variables here
public void run (String[] args) throws Exception
{
// put your code here
}
Il nuovo main()
metodo crea un'istanza della classe che contiene (sembra strano ma poiché main()
viene creato con la classe anziché con l'istanza, può farlo) e quindi chiama un metodo di istanza ( run()
).
C
. Ma non sarà molto buono. Cerca di usare Java come dovrebbe essere usato, come linguaggio orientato agli oggetti.