IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

avec Java Discussion :

problème d'instanciation de classe


Sujet :

avec Java

  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2020
    Messages
    95
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Ariège (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2020
    Messages : 95
    Points : 76
    Points
    76
    Par défaut problème d'instanciation de classe
    Bonjour à tous, je m'en mord les doigts mais j'ai voulu faire un dernier chapitre du cours "débuter avec java". l'idée est de créer une classe Book avec les infos auteur, titre etc puis d'instancier cette classe donc voila le code du cours:

    la classe:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    class Book {
     
    String title;
     
    String author;
     
    int numberOfPages; 
     
     }
    et l'instanciation:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Book mybook = new Book("Coding is art", "Becky James", 425);
    j'ai donc essayé d'appliquer ça comme ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    package librairie;
     
    public class Main {
     
        public static void main(String[] args) {
     
            class Book {
     
                String title;
     
                String author;
     
                int numberOfPages;
            }
     
            Book mybook = new Book("Coding is art", "Becky James", 425);
     
        }
    }
    et j'ai une erreur: "Book()' cannot be applied to '(java.lang.String, java.lang.String, int)"

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 104
    Points : 140
    Points
    140
    Par défaut
    Bonjour,
    La classe Book a été écrite sans aucun constructeur, donc elle ne possède qu'un constructeur par défaut sans aucun paramètre et qui initialise les champs de Book à leur valeur par défaut (null pour les champs de type String et 0 pour le champ de type int).

    Avec le seul constructeur par défaut, il faut se contenter d'écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Book mybook = new Book();
    mybook.title = "Coding is art";
    mybook.author = "Becky James";
    mybook.numberOfPages = 425;
    Pour pouvoir créer une instance de la classe Book qui initialise les 3 champs avec 3 paramètres, il faut créer un constructeur avec 3 paramètres dans la classe Book :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    public Book(String title, String author, int numberOfPages) {
        this.title = title;
        this.author = author;
        this.numberOfPages = numberOfPages;
    }

  3. #3
    Membre expérimenté Avatar de Cincinnatus
    Homme Profil pro
    Développeur d'applications métier
    Inscrit en
    Mars 2007
    Messages
    593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur d'applications métier
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2007
    Messages : 593
    Points : 1 682
    Points
    1 682
    Par défaut
    Bonjour,

    Je ne sais pas ce qui était expliqué dans le reste du cours, mais le code que tu postes n'avait aucune chance de fonctionner (en Java, du moins).
    Au passage, pour un débutant, se lancer dans les classes internes est osé... (class Main { méthode main { class Book { ...
    Une classe Book avec, pour tester, une méthode main suffisait.

    L'erreur indiquée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Book()' cannot be applied to '(java.lang.String, java.lang.String, int)"
    signifie que le compilateur ne connaît pas de constructeur Book( String, String, int ). Normal, il n'y en a pas. Le seul constructeur, généré par le compilateur si aucun n'existe, est celui sans paramètres, ici Book().
    Le compilateur a donc cherché un constructeur dans la classe Book, n'en a pas trouvé, a créé Book(), et n'a pas pu l'appliquer lors de l'appel Book mybook = new Book("Coding is art", "Becky James", 425);

    Tu peux voir de nombreux cours sur java sur ce site : https://java.developpez.com/cours/

  4. #4
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2020
    Messages
    95
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Ariège (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2020
    Messages : 95
    Points : 76
    Points
    76
    Par défaut
    Citation Envoyé par pk960 Voir le message
    Bonjour,
    La classe Book a été écrite sans aucun constructeur, donc elle ne possède qu'un constructeur par défaut sans aucun paramètre et qui initialise les champs de Book à leur valeur par défaut (null pour les champs de type String et 0 pour le champ de type int).

    Avec le seul constructeur par défaut, il faut se contenter d'écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Book mybook = new Book();
    mybook.title = "Coding is art";
    mybook.author = "Becky James";
    mybook.numberOfPages = 425;

    c'est bien ce qu'il me semblait du coup c'est ce que j'ai fait et ça me confirme que ce cours est vraiment un ramassis de c***eries

    Je ne sais pas ce qui était expliqué dans le reste du cours, mais le code que tu postes n'avait aucune chance de fonctionner (en Java, du moins).
    Au passage, pour un débutant, se lancer dans les classes internes est osé... (class Main { méthode main { class Book { ...
    Une classe Book avec, pour tester, une méthode main suffisait.
    pour ce qui est de l'organisation du code classe main{méthode main je me suis basé sur le début du cours et sur le template de base d'intellij par contre cette partie du cours ne précise pas d'organisation pour situer la classe Book et son instance
    du coup tu veux dire quelque chose comme ça? :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    package librairie;
     
    public class Book {
     
        String title;
     
        String author;
     
        int numberOfPages;
     
        public static void main(String[] args) {
     
            Book mybook = new Book();
            mybook.title = "Coding is art";
            mybook.author = "Becky James";
            mybook.numberOfPages = 425;
        }
     
    }

  5. #5
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 567
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 567
    Points : 21 632
    Points
    21 632
    Par défaut
    Oui.

    Tu peux aussi, si tu te sens prêt, avoir deux classes : une pour Book et une autre qui contient main(). Mais attention, il vaut mieux faire chaque classe dans son propre fichier .java.

  6. #6
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2020
    Messages
    95
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Ariège (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2020
    Messages : 95
    Points : 76
    Points
    76
    Par défaut
    j'avais aussi pensé à ça, mais c'est vrai que je suis un peu paumé pour l'instant, j'avais fait de la POO en C++ mais ça me fout plus le bord** qu'autre chose (le principe du main dans une classe j'ai un peu de mal) heureusement intellij est bien foutu ça aide pas mal à comprendre les erreurs.

Discussions similaires

  1. Problème pour instancier une classe
    Par Armulis dans le forum C++
    Réponses: 4
    Dernier message: 29/06/2014, 16h06
  2. Problème d'instanciation de classe
    Par alexxxx69 dans le forum ASP.NET MVC
    Réponses: 6
    Dernier message: 03/11/2011, 16h18
  3. [Framework] Probléme d'instanciation des classe dao et des classe service
    Par daly2009 dans le forum Spring
    Réponses: 1
    Dernier message: 03/11/2010, 15h19
  4. Problème d'instanciation de classe C++
    Par gilims dans le forum C++
    Réponses: 18
    Dernier message: 22/10/2010, 17h39
  5. problème pour instancier une class
    Par gronaze dans le forum C++
    Réponses: 8
    Dernier message: 30/06/2006, 13h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo