Vous devez comprendre la différence entre une classe et une instance de cette classe. Si vous voyez une voiture dans la rue, vous savez immédiatement qu'il s'agit d'une voiture, même si vous ne pouvez pas en voir le modèle ou le type. Cela est dû au fait que vous comparez ce que vous voyez avec la classe "voiture". La classe contient ce qui est similaire à toutes les voitures. Considérez-la comme un modèle ou une idée.
En même temps, la voiture que vous voyez est une instance de la classe "voiture" puisqu'elle possède toutes les propriétés que vous attendez : Il y a quelqu'un qui la conduit, elle a un moteur, des roues.
Ainsi, la classe dit "toutes les voitures ont une couleur" et l'instance dit "cette voiture spécifique est rouge".
Dans le monde OO, vous définissez la classe et à l'intérieur de la classe, vous définissez un champ de type Color
. Lorsque la classe est instanciée (lorsque vous créez une instance spécifique), la mémoire est réservée pour la couleur et vous pouvez donner une couleur à cette instance spécifique. Comme ces attributs sont spécifiques, ils sont non statiques.
Les champs et méthodes statiques sont partagés par toutes les instances. Ils sont destinés à des valeurs qui sont spécifiques à la classe et non à une instance spécifique. En ce qui concerne les méthodes, il s'agit généralement de méthodes d'aide globales (telles que Integer.parseInt()
). Pour les champs, il s'agit généralement de constantes (comme les types de voitures, c'est-à-dire quelque chose pour lequel vous disposez d'un ensemble limité qui ne change pas souvent).
Pour résoudre votre problème, vous devez instancier une instance (créer un objet) de votre classe afin que le runtime puisse réserver de la mémoire pour l'instance (sinon, différentes instances s'écraseraient les unes les autres, ce que vous ne voulez pas).
Dans votre cas, essayez ce code comme point de départ :
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
}
Le nouveau main()
crée une instance de la classe qu'elle contient (cela peut paraître étrange, mais puisque la méthode main()
est créé avec la classe et non avec l'instance, il peut le faire) et appelle ensuite une méthode d'instance ( run()
).
5 votes
Essayez d'éviter l'utilisation de l'électricité statique dans la mesure du possible. Vous puede écrire un programme complet, tout statique, comme en
C
. Mais ce ne sera pas une très bonne. Essayez d'utiliser Java comme il est censé l'être, en tant que langage orienté objet.