Bonjour,
J'ai deux classe MatriceTableau et MatriceCreuse qui héritent d'une classe abstract AbstractClass, et cette dernière implémente une interface MatriceCarree, cette interface contient une méthode "ajoute" qui permet de faire l'addition entre deux matrice.


j'ai redéfinit la méthode "ajoute" de l'interface dans MatriceTableau;MatriceCreuse et AbstractClass

Si les deux matrice sont de type MatriceTableau (resp MatriceCreuse) alors la méthode "ajout" de la classe MatriceTableau (resp MatriceCreuse) est exécutée.
Sinon les deux matrices sont de type différentes alors la méthode "ajout" de la classe AbstractClass est éxécuté


LA structure de mon programme est la suivante:

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
public interface MatriceCarree {
   void ajoute (MatriceCarree m) throws IllegalArgumentException ;
}
 
public abstract class AbstractClass implements MatriceCarree {
 
public void ajoute(AbstractClass  matrice) throws IllegalArgumentException {
blabla}
 
}
 
public class MatriceTableau extends AbstractClass {
 
public void ajoute(MatriceCarree m)  {			
 
if (m instanceof MatriceTableau)	{traitement1} 
else super.ajoute((AbstractClass)m);
				   }	
 
public class MatriceCreuse extends AbstractClass {
public void ajoute(MatriceCarree m)  {			
 
if (m instanceof MatriceCreuse)	{traitement1} 
else super.ajoute((AbstractClass)m);
 }
Mon problème est que c'est la méthode "ajout" de la classe AbstractClass qui est toujours éxécuté.

Merci pour votre aide