Bonsoir,
voici un exercice d'examen, il y a quelque point que je n'est pas saisie:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 public interface I{ public void f(); public void g(int n); }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 public interface J{ public void g(int n); public int h(int n); }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 public class A{ private int moi; public A(int moi){this.moi=moi;} public int getMoi(){return moi;} public int f(int n){ moi+=n; System.out.println("A"+moi); return moi; } }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 public class B extends A implements J{ private static int cptB; public B(int moi){ super(2*moi); cptB++; } public void g(int n){System.out.println("B"+n+"-"+cptB);} public int h(int n){ int moi=getMoi(); System.out.println("B"+(moi+n)); return moi; } }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 public class C extends A{ public C(int moi){super(moi);} }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 public class D extends B implements I{ private int nb; public D(int moi,int nb){super(moi);this.nb=nb;} public void f(){ f(nb); System.out.println("D"+nb); } }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 public class E extends C implements I{ public E(int moi){super(moi);} public void f(){System.out.println("E"+f(3));} public void g(int n){ } }
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 public class Test2{ public static void main(String[] args){ A a=new A(5); A d1=new D(8,2); B b1=new B(6); C c1=new C(7); D d2=new D(2,4); System.out.println(a.f(2)); c1.f(2); d2.f(); d2.g(3); b1.g(2); b1.h(4); } }
alors dans l'exercice il faut dire si il y d'abord des erreurs dans le programme ensuite dire ce qu'il se passe pour chaque instruction dans le main (si erreur corrigé etc)
ma première question:
pourquoi D qui implements I compile sans erreur alors que E qui implements I ne compile pas sans la méthode g ?
quand on implements une interface il faut utiliser toutes les méthodes de l'interface alors pourquoi sa compile??
seconde question:
A d1=new D(8,2); pourquoi sa compile sans erreur alors que A est la classe mère de D, elle ne possède donc pas toutes les méthodes de D (il n'y a que D qui hérite des méthodes de la classe A)
dernière question:
d2.g(3) donne B3-3 cptB est static c'est à dire que la variable gardera la valeur de chaque instance du même type: (la variable évolue)
alors pourquoi : b1.g(2) donne B2-3 ? et non B2-4 !
Merci d'avance pour votre aide !
Partager