JAVA - Impossible d'instancier une classe !

S.BOURGIN Messages postés 6 Statut Membre -  
choubaka Messages postés 5535 Date d'inscription   Statut Modérateur Dernière intervention   -
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. BigFlo93 Messages postés 51 Date d'inscription   Statut Membre Dernière intervention   5
     
    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 !
    0
  2. choubaka Messages postés 5535 Date d'inscription   Statut Modérateur Dernière intervention   2 113
     
    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
    0
  3. Joshua42 Messages postés 77 Statut Membre 8
     
    de la meme facon pour le nom de tes classes met le premier caractere en majuscule et les autres en minuscules. c est mieux.
    0
  4. S.BOURGIN
     
    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 @+
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. choubaka Messages postés 5535 Date d'inscription   Statut Modérateur Dernière intervention   2 113
     
    de rien, de rien

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