JAVA - Impossible d'instancier une classe !

Bonjour,

- Microsoft Windows XP
- SDK 1.4.1.01
- JCreator 2.5

Je débute en programmation JAVA et je doit réaliser un exercice simple sur le concept des classes. Cependant, je n'arrive par à instancier mes classes ! Je ne pense pas que cela vient de mon programme car j'ai téléchargé des exemples et lors de l'intenciation JCreator me retourne le meme message d'erreur.

public class LP_TD2_EXO1
{
public class COMPTE
{
public String Numero;
public float Solde;

public COMPTE(String $Num)
{
this.Numero=$Num;
this.Solde=0;
}
}

public static void main(String args[])
{
COMPTE C1 = new COMPTE();
}
}

MESSAGE ERREUR A LA COMPILATION :

F:\www\java\LP_TD2_EXO1.java:63: non-static variable this cannot be referenced from a static context
COMPTE C1 = new COMPTE();

Quelqu'un pourrait m'aider SVP parceque là je n'avance pas dans l'exo ? :o(

Merci

5 réponses

  1. Salut !

    Je pense savoir d'ou viens ton erreur. Ton instanciation c'est ca mais c'est pas ca !
    Tu ne passes pas de parametres lors de ton instanciation mais ta méthode attends un parametre. donc il faut que tu fasses ceci pour que ca marche:
    COMPTE C1 = new COMPTE(num);

    Si tu veux ne pas passer de parametre, tu doit rajouter dans ta classe COMPTE ceci:
    public void COMPTE() { ... }

    voila, je pense que c'était ca !
    1. Modérateur
      En gros c'est plus ou moins ça

      il faut savoir que lorsque tu crée une classe, java crée par défaut un constructeur ne réclamant pas d'arguments

      public COMPTE();

      donc si tu crées un constructeur réclamant des arguments

      public COMPTE(String arg);

      mais que tu appelles le constructeur par défaut, l'instance est bien créée mais tes variables ne seront pas celles que tu attends.
      voici un exemple avec les deux possibilités:

      Dans le code ci dessous, les deux constructeurs sont implémentés avec une méthode permettant de donner une valeur à la variable numero;


      public class COMPTE
      {
      public String numero;
      public float solde;

      public COMPTE(String $Num)
      {
      this.numero=$Num;
      this.solde=0;
      }

      public COMPTE(){
      this.numero = "";
      this.solde = 0;
      }

      public void setCompte(String $Num){
      this.numero = $Num;
      }

      public String getCompte(){
      return this.numero;
      }

      public static void main(String args[])
      {
      COMPTE C1 = new COMPTE();
      C1.setCompte("5");
      System.out.println(C1.getCompte());
      COMPTE C2 = new COMPTE("6");
      System.out.println(C2.getCompte());
      }
      }


      Un petit conseil si tu débutes, par convention, les noms des variables en java , habitues toi à les nommer en commençant par une minuscule ( private String leString). Ceci afin de faciliter la dfférenciation entre les classes et les variables.

      Choubanimal : 
      "L'alcool est un ennemi", c'est lâche de fuir l'ennemi
      1. de la meme facon pour le nom de tes classes met le premier caractere en majuscule et les autres en minuscules. c est mieux.
        1. Salut,

          Merci de tes remarques Joshua42, effectivement il y avait un problème dans le code source que j'avais diffusé. Mais c'était lié à une faute de frappe.

          Mon vrai problème a été résolu en plaçant mes classe dans des fichiers .java séparé.

          Merci et @+
          1. Modérateur
            de rien, de rien

            Choubanimal : 
            "L'alcool est un ennemi", c'est lâche de fuir l'ennemi