Partage
  • Partager sur Facebook
  • Partager sur Twitter

le mot clé super

    14 février 2021 à 21:00:21

    bonjour voici mes classes

    public class Main {
        public static void main(String... args){
    
            Moteur mot=new Moteur(5,"essence");
            Vehicule veh=new Vehicule(true,"vert");
    
            Voiture clio = new Voiture(5,100, mot);
            System.out.println(clio.vitesse+" "+clio.couleur);
            int vit=clio.accelerer(50);
            System.out.println(clio.vitesse);
    
            System.out.println(clio.couleur);
    
    
        }
    }
    

    class voiture

    public class Voiture extends Vehicule {
        int vitesse=100;
        int rapport;
        Moteur moteur;
    
        Voiture()
        {
    super();
        }
    
        Voiture (int vitesse, int rapport,Moteur mot){
    
            this.rapport=rapport;
            this.vitesse=vitesse;
            this.moteur=mot;
           }
    
        Voiture(boolean automatique, String couleur) {
            super(automatique, couleur);
        }
    
        int accelerer(int v){
                this.vitesse=this.vitesse+v;
                return this.vitesse;
            }
    
        }
    

    classe mère

    public class Vehicule {
        boolean automatique = false;
        String couleur = "vert";
    
        Vehicule(boolean automatique, String couleur) {
            this.automatique = automatique;
            this.couleur = couleur;
    
        }
    
    
    
    }
    

    le message d'erreur:

    C:\Users\jm18c\OneDrive\Bureau\java\src\Voiture.java:8

    java: constructor Vehicule in class Vehicule cannot be applied to given types;

      required: boolean,java.lang.String

      found: no arguments

      reason: actual and formal argument lists differ in length

    merci de m'aider je peine a comprendre cette déclaration

    bonsoir

      reason: actual and formal argument lists differ in length





    • Partager sur Facebook
    • Partager sur Twitter
      14 février 2021 à 22:18:31

      Bonjour,

      Quand tu crées une classe, tu définis des constructeurs. Si tu n'en définis aucun, Java crée implicitement un constructeur sans paramètre.

      Dans Vehicule, tu as défini un constructeur avec deux paramètres. Il n'y a donc pas de constructeur implicite sans paramètre.

      Dans Voiture, ligne 8, tu appelles super() sans paramètre, un constructeur sans paramètre, qui n'existe pas, d'où ton message d'erreur.

      Ligne 11, c'est Java qui appelle super() par défaut, causant la même erreur.

      • Partager sur Facebook
      • Partager sur Twitter
        14 février 2021 à 22:31:47

        Soit il faut appeler super avec deux arguments (dans Voiture), soit il faut ajouter un constructeur sans argument (dans Vehicule). A toi de voir la logique que tu choisis.
        • Partager sur Facebook
        • Partager sur Twitter

        le mot clé super

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown