Class is not abstract and does not override abstract method in superclass
Bonjour à toutes et à tous,
j'ai un problème avec le pattern decorator :
Avec le code qui suit je me retrouve avec le message suivant à la compilation : "error: CoucheChocolat is not abstract and does not override abstract method preparer() in Patisserie
public class CoucheChocolat extends Couche{"
Voici le code :
d'abord une classe abstraite "Patisserie" :
Code:
1 2 3
| public abstract class Patisserie {
public abstract String preparer();
} |
Une classe "Gateau" qui étend la classe "Patisserie" :
Code:
1 2 3 4 5
| public class Gateau extends Patisserie{
public String preparer(){
return "Je suis un gâteau et je suis constitué des éléments" + " suivants :\n";
}
} |
Une classe "Couche" qui étend aussi la classe abstraite "Patisserie"
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
| public abstract class Couche extends Patisserie {
protected Patisserie pat;
protected String nom;
public Couche(Patisserie p) {
pat = p;
}
public String Preparer(){
String str = pat.preparer();
return str + nom;
}
} |
Puis une classe "CoucheChocolat" qui étend la classe "Couche" :
Code:
1 2 3 4 5 6
| public class CoucheChocolat extends Couche{
public CoucheChocolat(Patisserie p) {
super(p);
this.nom = "\t- Une couche de chocolat.\n";
}
} |
Enfin , le code "main"
Code:
1 2 3 4 5 6 7 8 9 10 11
| public class PatternDecorator {
public static void main(String[] args) {
Patisserie pat = new CoucheChocolat(
// new CoucheCaramel(
// new CoucheBiscuit(
// new CoucheChocolat(
new Gateau());
System.out.println(pat.preparer());
}
} |
Remarque : pour simplifier j'ai supprimer les classes CoucheCaramel et CoucheBiscuit.
Donc l'erreur à la compilation est la suivante :
"error: CoucheChocolat is not abstract and does not override abstract method preparer() in Patisserie
public class CoucheChocolat extends Couche{"
Je ne comprends pas cette erreur, alors par avance merci pour votre aide !!
Implementation de la méthode
Le polymorphisme ne peut pas être appliquer sur une méthode abstract.
C'est mieux d'utiliser les interfaces
Class is not abstract and does not override abstract method in superclass
Bonjour à toutes et à tous,
merci beaucoup Yonito, pour la correction et l'explication fournis. Maintenant le code fonctionne !! YOUPI !!
Merci aussi à thelvin et à daohamadou pour leur discussion. Cela me permet aussi de progresser dans mon apprentissage de java.
Bonne semaine.