Bonjour à toutes et à tous,
j'ai repris en le simplifiant un exercice sur la création d'un garage :
dans mon cas j'ai :
- une classe garage qui va faire écrire le modèle d'une voiture, le type de son moteur...
- une classe Vehicule que voici :
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 public class Garage { String nomModele; TypeMoteur typeMoteur; String cylindre ; double prixMoteur; Garage() { } public String toString() { String str= "Voiture modèle " + nomModele + " " + typeMoteur + " " + cylindre + " prix du moteur : " + prixMoteur + " "; return str; } }
- une classe Lagouna qui hérite de Vehicule pour le nom du modèle :
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
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 public class Vehicule { String cylindre; double prixMoteur; TypeMoteur typeMoteur; protected String nomModele; public Vehicule(){ } public void setMoteur(TypeMoteur type){ this.typeMoteur = type; } // On retourne le nom du modèle public String getNomModele() {return nomModele;} // On récupère la cylindrée : public String getCylindre(){ return cylindre; } // On récupère le prix de moteur public double getPrixMoteur(){ return prixMoteur; } //On récupère le type de moteur public TypeMoteur getTypeMoteur(){ return typeMoteur; } }
- Une classe Moteur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 public class Lagouna extends Vehicule{ public Lagouna(){ } public String getLagouna(String nomModele){ this.nomModele = "Lagouna"; return this.nomModele; } }
-Une classe TypeMoteur qui est en fait une enum :
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 public class Moteur { protected TypeMoteur typeMoteur; protected double prixMoteur; public TypeMoteur getTypeMoteur() {return typeMoteur;} public double getPrixMoteur() {return prixMoteur;} public void setTypeMoteur (TypeMoteur type){ this.typeMoteur = type; } }
- Une classe MoteurEssence qui hérite de la classe Moteur :
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 public enum TypeMoteur { ESSENCE ("ESSENCE"); private String typeMoteur = ""; // Constructeur par défaut TypeMoteur(String typeMoteur){ } public void setTypeMoteur(String type){ this.typeMoteur = type; } public String toString(){ return typeMoteur; } }
- Et enfin la classe de test que voici :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 public class MoteurEssence extends Moteur { String cylindreMoteur; double prixMoteur; public MoteurEssence (String cyl, double prixMot){ this.setTypeMoteur(typeMoteur.ESSENCE); this.cylindreMoteur = cyl; this.prixMoteur = prixMot; } }
A la compilation j'obtiens ce message qui concerne la dernière ligne de ce code
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 public class ZERO_TEST_1 { public static void main(String[] args) { Garage garage = new Garage(); System.out.println (garage); Vehicule lag1 = new Lagouna(); lag1.setMoteur(new MoteurEssence ("150 Chevaux", 10256d)); }
" lag1.setMoteur(new MoteurEssence ("150 Chevaux", 10256d));" :
error : incompatible types: MoteurEssence cannot be converted to TypeMoteur
Je comprends bien qu'il y a un problème de type la dedans.
Sachant que je suis un triple zéro j'aimerais comprendre un peu tout dans ce code, à savoir :
- comment corriger l'erreur à la compilation,
- quand dans la ligne
" lag1.setMoteur(new MoteurEssence ("150 Chevaux", 10256d));"
on instancie un objet MoteurEssence, que se passe-t-il ?
Je suis paumé sur ces histoires de typeMoteur, Moteur, MoteurEssence, d'objet, y compris sur cette instruction : " this.setTypeMoteur(typeMoteur.ESSENCE);"....
Enfin, voilà, en gros je n'y comprends pas grand chose, alors si une âme charitable pouvait m'éclaircir sur tout cela je lui en serait infiniment reconnaissant.
Par avance merci.
Partager