Heritage - Java
TOTO25
-
KX Messages postés 19031 Statut Modérateur -
KX Messages postés 19031 Statut Modérateur -
Bonjour,
Je voudrais appliquer l’héritage afin que les classes Cercle et Carré héritent à la fois de Forme et Resizable.
Merci d'avance!
voici le code :
**Modifié par la modération pour une lecture plus facile du code, à l'avenir utilisez les balises, VOIR CETTE PAGE
**Modifié par la modération pour une lecture plus facile du code, à l'avenir utilisez les balises, VOIR CETTE PAGE
.
Je voudrais appliquer l’héritage afin que les classes Cercle et Carré héritent à la fois de Forme et Resizable.
Merci d'avance!
voici le code :
**Modifié par la modération pour une lecture plus facile du code, à l'avenir utilisez les balises, VOIR CETTE PAGE
public class Cercle {
double diametre = 0;
public Cercle(double taille) {
this.diametre = diametre;
}
public double getPerimeter() {
return Math.PI * diametre;
}
public void resize(double diametre) {
this.diametre = diametre
}
}
public class Carre {
double taille = 0;
public Carre(double taille) {
this.taille = taille;
}
public double getPerimeter() {
return taille*4;
}
public void resize(double taille) {
this.taille = taille;
}
}
public abstract class Resizable {
public abstract void resize(double d);
}
public abstract class Forme {
public abstract double getPerimeter();
}
**Modifié par la modération pour une lecture plus facile du code, à l'avenir utilisez les balises, VOIR CETTE PAGE
.
A voir également:
- Heritage - Java
- Jeux java itel - Télécharger - Jeux vidéo
- Waptrick java football - Télécharger - Jeux vidéo
- Eclipse java - Télécharger - Langages
- Waptrick java voiture - Télécharger - Jeux vidéo
- Java apk - Télécharger - Langages
1 réponse
Bonjour
Pour tes prochains posts, merci de lire et appliquer ce petit tuto https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
Je ne suis pas spécialiste en java, j’ai donc vérifié avant de te répondre.
Il n’y a pas d’héritage multiple en Java, il faut utiliser au moins une interface.
Dans ton cas, forme et resizable peuvent sans problèmes être toutes 2 des interfaces car elles n’ont aucun code.
Pour tes prochains posts, merci de lire et appliquer ce petit tuto https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
Je ne suis pas spécialiste en java, j’ai donc vérifié avant de te répondre.
Il n’y a pas d’héritage multiple en Java, il faut utiliser au moins une interface.
Dans ton cas, forme et resizable peuvent sans problèmes être toutes 2 des interfaces car elles n’ont aucun code.
Bien vu pour l'héritage multiple ;-)
En revanche il pourrait exister une alternative, c'est que la classe Forme hérite de la classe Resizable.
Remarque : en terme de nommage, il vaut mieux tout mettre en une seule langue (anglais de préférence)
public class Sizable { private double size; public Sizable(double size) { this.size = size; } public void setSize(double size) { this.setSize(size); } public double getSize() { return size; } }public abstract class Shape extends Sizable { public Shape(double size) { super(size); } public abstract double getPerimeter(); }public class Circle extends Shape { public Circle(double diameter) { super(diameter); } @Override public double getPerimeter() { return Math.PI * getSize(); } }public class Square extends Shape { public Square(double side) { super(side); } @Override public double getPerimeter() { return 4 * getSize(); } }Toutefois on peut faire de l'héritage multiple en Java, via les interfaces.
Mais c'est de l'héritage multiple de code, pas d'objets.
Exemple :
interface AB { default String a() { return "AB.a"; } default String b() { return "AB.b"; } } interface AC { default String a() { return "AC.a"; } default String c() { return "AC.c"; } } interface X extends AB, AC { @Override default String a() { return AB.super.a(); // ou AC.super.a() ou autre } }À la compilation, Java plantera si l'interface X ne surcharge pas la méthode a() car il ne saura pas s'il faut prendre la version de AB (ce que j'ai fait), celle de AC, ou autre chose.
En revanche dans X la méthode b() sera celle de AB et la méthode c() sera celle de BC.