- Citation :
- Ton erreur était logique, on ne crée pas une pomme en la déclarant poire
non.
A a = new B est autorisé à condition que B dérive de A (ce qui était bien le cas)
le fait que ca ne marche pas venait du fait que A était défini en abstract, si elle n'était pas défini en abstract mais en public, alors il n'y aurait pas eu de problèmes sur cette instruction.
mon problème vient maintenant de:
- Citation :
- ArrayList<Fourmi> tribu = new ArrayList<Fourmi>();
pour la même raison que tout à l'heure, je ne peux pas utiliser la classe Fourmi car elle est en abstract. donc je dois trouver un subterfuge pour pouvoir faire quand même une arraylist de fourmis sans qu'il me dire "nan, ta classe est en abstract".
je pensais faire une classe Insecte en public avec Fourmi qui hériterait de Insecte, afin de faire une arraylist sur Insecte qui lui est bien public.
à essayer...
EDIT: finalement j'avais bien raison, il fallait faire Fourmi f= new LarveMale; (ou autre larve) c'était ca qu'il fallait faire, sauf qu'il fallait l'écrire comme ca:
- Citation :
- Fourmi f;
if (blabla)
f=new larvemale(blabla);
else if (blabla)
f=new larvereine(blabla);
else
f=new larveouvriere(blabla);
et pour l'arraylist, j'avais raison aussi.
le problème venait du fait que je n'avais pas fait de constructeur et que j'utilisais mal mes variables entières.
maintenant, j'ai pu finir mon programme, il est excellent.
je le publierai demain si j'y pense.