Bonjour/Bonsoir à vous,
Je suis débutant en Java et je viens de commencer le cour sur les classe abstraite et les interface. Bon jusque là j'ai cru comprendre comment tout cela fonctionnait, j'ai donc décidé de m’entraîner de mon coté, et je me suis rendu compte que je suis un peux largué au final...
Je m'explique j'ai voulu m’entraîner en créant des robots qui ont différentes fonctions, un robot de combat cac, un distant, un healer, ect... Tous ses objets sont enfants de la super classe (abstraite) Robot, et donc j'aimerai crée une méthode pour le healer qui fait que ca ajoute 100 point de vie à la cible et retire 10 points de mana au healer. Dans mon esprit je pensais que crée cette méthode dans le classe enfant prévu à cet effet aurait suffit... Seulement non ca ne fonctionne pas, le seul moyen que j'ai trouvé pour réussir a été de créer cette méthode dans la superclass.
Le résultat fonctionne sauf que ma question est du coup... Les classe enfants ne peuvent-ils vraiment pas crée de méthode ? Parce que ca voudrais dire qu'il est impossible de faire ne serait-ce qu'un simple getter/setter, et du coup je suis obligé de crée chaque variables dans la superclass, et donc les autre objet qui ne se serviront pas du tout de cette variable n'auront pas le choix de devront être instancié avec(un guerrier avec du mana par exemple). Et ce n'est pas ce que je veux.
J'ai essayé de crée une interface pour crée ces méthode et l'implémenter à mon healer mais rien n'y fais non plus...
Du coup j'ai essayé quelque chose comme ca:
Bon, malheureusement impossible d’accéder à ces méthode via mon main surtout que dans ma méthode les setter et getter sont en rouge donc non accessible.
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 import Comportements.Healing; public class RobotHeal extends Robot implements BuildHealer{ private int mana; public RobotHeal(String type, int healthP, int shieldP, int speedB, int mana) { super(type, healthP, shieldP, speedB); this.support = new Healing(); this.mana = mana; } @Override public void setMana(int mana) { this.mana = mana; } @Override public int getMana() { return mana; } @Override public void giveHeal(Robot x, Robot y){ int healing = 100; x.setHealthP(healing+=x.getHealthP()); y.setMana(y.mana-=10); System.out.println("Les HP de "+x.type+" sont désormé à "+x.getHealthP()+"HP"); System.out.println(y.type+" a perdu 10 de mana en guerrissant "+x.type); System.out.println("Ses point de mana sont désormé de "+y.getMana()); } }
Du coup comment créer un code similaire sans devoir faire une classe parent rempli de méthode et de variable pour chacun des objet enfant... Et si c'est impossible et que je n'ai pas le choix que de tout faire dans ma classe parent, je devrait donc crée un constructeur pour chacune des classe ?(afin d'éviter de me retrouver avec un guerrier avec du mana par exemple) Et surtout à quoi servent les interface si ce n'est pas pour crée des méthodes pour des classe déjà hérité ?
Merci pour vos futurs réponses, je sais que mes questions ne sont pas super claire c'est assé compliqué d'expliquer quelque chose que je ne comprend pas, n'hésitez pas à me demander plus de détail si vous ne m'avez pas compris![]()
Partager