Erreur de compilation tentative d'héritage

Résolu
cmonnom Messages postés 8 Date d'inscription lundi 9 mars 2009 Statut Membre Dernière intervention 19 avril 2009 - 19 avril 2009 à 21:42
cmonnom Messages postés 8 Date d'inscription lundi 9 mars 2009 Statut Membre Dernière intervention 19 avril 2009 - 19 avril 2009 à 23:18
Bonjour,

J'essaye tant bien que mal de comprendre et de maîtriser la notion d'héritage mais le compilateur me renvoie une erreur dont je ne comprend pas la cause...
Peut-être que quelqu'un pourra éclairer ma lanterne.

Voici mon problème:
J'ai une classe Voiture et une classe héritée VoitureDecap.
Les attributs de Voiture sont : modèle, année, couleur.
Les attributs de VoitureDecap sont hérités de Voiture + toit électrique ou pas (booléen) et temps d'ouverture.

L'erreur de compilation est la suivante
:

./VoitureDecap.java:10: cannot find symbol
symbol  : constructor Voiture()
location: class Voiture
    {
    ^
1 error


Voici le programme de Test et les deux classes Voiture et VoitureDecap:


import fr.jussieu.script.Deug;

public class TestVoitureDecap {
    public static void main(String[] args){

    //creation de l'objet
    Voiture V = new Voiture("Renault clio", 2008, "Blanche");
    VoitureDecap V2 = new VoitureDecap("Peugeot 206", 2007, "Noire", false, 15);

    //affichage des attributs
    V.Affiche();
    V2.Affiche();

    }
}
   

import fr.jussieu.script.Deug;

public class Voiture {

    public String modele;
    public int annee;
    public String couleur;

 
//constructeur
    public Voiture(String M, int A, String C)
    {
    modele = M;
    annee = A;
    couleur = C;
    }

    //methodes

          public void Affiche() {

    Deug.println("Modèle : " + modele);
    Deug.println("Année : " + annee);
    Deug.println("Couleur : " + couleur);
    }
            

}


import fr.jussieu.script.Deug;

public class VoitureDecap extends Voiture{

    private boolean electrique; //toit ouvrant électrique ou manuel
    private int temps; //temps d'ouverture

    //constructeur
    public VoitureDecap(String M, int A, String C, boolean E, int T)
    {

    electrique = E;
    temps = T; 

    }

    //methodes

       public void Affiche() {

    super.Affiche();
    if (electrique = false)
        {
        Deug.println("Toit ouvrant électrique.");
        }
    else Deug.println("Toit ouvrant manuel.");

    Deug.println("Temps d'ouverture/fermeture : " + temps + "sec.");
       
    }

}

Merci pour votre aide!

3 réponses

izicharley Messages postés 8 Date d'inscription vendredi 19 décembre 2008 Statut Membre Dernière intervention 14 mai 2009
19 avril 2009 à 22:51
bonsoir ctonnom?
je vois deja qu'il manque l 'appel au constructeur de la classe mere de voituredecap
qui se fait avec la methode super();

0X54686F6D6173
3
cmonnom Messages postés 8 Date d'inscription lundi 9 mars 2009 Statut Membre Dernière intervention 19 avril 2009
19 avril 2009 à 23:14
Quelle est la syntaxe pour utiliser super() ? Il me semble qu'il faut le mettre en tête du constructeur, c'est ça? Car lorsque que j'essaye, le compilateur me renvoie:

./VoitureDecap.java:13: cannot find symbol
symbol  : constructor Voiture()
location: class Voiture
    super();
    ^


public class VoitureDecap extends Voiture{

    private boolean electrique; //toit ouvrant électrique ou manuel
    private int temps; //temps d'ouverture

    //constructeur
    public VoitureDecap(String M, int A, String C, boolean E, int T)
    {

      
    super();
    electrique = E;
    temps = T; 

    }
0
cmonnom Messages postés 8 Date d'inscription lundi 9 mars 2009 Statut Membre Dernière intervention 19 avril 2009
19 avril 2009 à 23:18
Ca y est, j'ai trouvé!!

En fait, j'ai rajouté super(M, C, A) au constructeur de VoitureDecap!

Merci izicharley!
0
Rejoignez-nous