Bonjour,

J'ai créé une TreeMap d'animaux avec comme clé leur code et en valeur leur type Animal. (classe Animal)

J'ai créé un classe abstraite : Animal avec deux classes Mechant et Gentil qui hérite d'Animal.

Animal est une classe abstraite car les "Mechant" et "Gentil" boivent, dorment, crient, mangent... mais les Mechant ont une particularité ils possèdent la méthode attaque() (que les gentils n'ont pas).

Du coup, quand je parcours ma treemap:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
for(Animal courant : ferme.getListAnimaux()){
}
public ArrayList<Animal> getListAnimaux(){
		ArrayList<Animal> listOfanimal= new ArrayList<Animal>();
		for(Animal animal : animaux.values())
			listOfanimal.add(animal);
		return listOfanimal;
	}
je ne peux faire animal.attaque() car la méthode attaque n'a pas été définie comme abstract.
Est-ce une faute de déclarer cette méthode comme asbtract et rajouter dans gentil :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
public void attaque(){}
ou bien est-ce qu'il y a un autre moyen ?
j'ai essayé des :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
if(mechant) courant = (Mechant) courant
en vain...

Merci d'avance,