Bonjour,
J'ai une interface interf1 et une classe c1 qui doit implémenter les méthodes de cette interface. Quand, dans la classe c1, j'importe (import interf1), on me déclare une erreur.
Merci d'avance pour votre aide.
Version imprimable
Bonjour,
J'ai une interface interf1 et une classe c1 qui doit implémenter les méthodes de cette interface. Quand, dans la classe c1, j'importe (import interf1), on me déclare une erreur.
Merci d'avance pour votre aide.
Salut,
Tu peux nous copier ton code exact (entre balises CODE - Voir bouton http://club.developpez.com/aidenouve...boutoncode.png dans l'éditeur) et le message d'erreur que tu obtiens, s'il te plait ?
Code:
1
2
3
4
5
6
7
8
9 package premier.projet; public interface interfacecalcul { double ajouter(int i,int j); double soustraction(int i,int n); }
ERREUR:C2 is not abstract and does not override abstract method soustraction(int,int) in interfacecalculCode:
1
2
3
4
5
6
7
8
9
10
11
12
13 package premier.projet; import interfacecalcul; public class C2 implements interfacecalcul { public int ajouter(int i,int j){ return i+j+10; } public int soustraction(int a,int p){ return a*b*2; } }
Salut,
Les méthodes de l'interface retournent du double, donc les méthodes correspondantes dans la classe concrète doivent retourner du double. Les méthodes de l'interface doivent être complètement implémentées avec les mêmes types (même signature). Il y a un second problème : la variable b dans la méthode soustraction n'existe pas (c'est probablement p).
Quelques remarques annexes :
- L'import est inutile car la classe et l'interface sont dans le même package ;
- Les conventions de nommage pour les noms d'interface sont les mêmes que pour les noms de classe : UpperCamelCase ;
- Il est recommandé d'annoter les implémentations concrètes par @Override (même si dans ton cas, c'est moins utile que dans le cas général) ;
- Aère plus et indente ton code pour une meilleur lisisbilité ;
- Accessoirement, les noms de méthodes devraient être cohérents (si ajouter, alors soustraire, ou alors addition et soustraction). Et cohérente avec ce qu'elles font : la soustraction devrait faire une soustraction et pas une multiplication, à priori.
Code:
1
2
3
4
5
6
7
8
9 package premier.projet; public interface InterfaceCalcul { double ajouter( int i, int j ); double soustraction( int i, int n ); }
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package premier.projet; public class C2 implements InterfaceCalcul { @Override public double ajouter( int i, int j ) { return i + j + 10; } @Override public double soustraction( int a, int p ) { return a * p * 2; } }