Heritage - Java
Fermé
TOTO25
-
Modifié le 8 nov. 2019 à 09:28
KX Messages postés 16668 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 17 mars 2023 - 9 nov. 2019 à 09:18
KX Messages postés 16668 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 17 mars 2023 - 9 nov. 2019 à 09:18
A voir également:
- Heritage - Java
- Maison héritage avis ✓ - Forum Consommation et internet
- Jeux java itel ✓ - Forum Jeux vidéo
- Java runtime - Télécharger - Langages
- Texte de bara héritage ✓ - Forum Vos droits sur internet
- Java apk - Télécharger - Langages
1 réponse
Whismeril
Messages postés
18279
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
17 mars 2023
888
8 nov. 2019 à 07:11
8 nov. 2019 à 07:11
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.
Modifié le 8 nov. 2019 à 07:49
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(); } }8 nov. 2019 à 08:49
8 nov. 2019 à 14:28
8 nov. 2019 à 14:38
Modifié le 8 nov. 2019 à 15:01
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.