bonsoir à tous,
dans le cas d'un héritage avec une redéfinition des méthodes comment est ce que java cherche la bonne méthode ? moi j'ai rien pigé!et c'est la raison derrière les questions suivantes :
soit A la classe mère de B :
question 1 : dans l'instruction A a = new B(); est ce cela veut dire qu'on ne crée dans a que la partie de B qui n'existe pas en A ?!
question 2 : A a = (B) b ;
c'est quoi la différence entre cette écriture et celle-ci :
dans le cours le prof a écris que A a = (B) b n'est correcte que si la classe B est une sous-classe de A,(je comprends ça) mais il a ajouté que ( le type déclaré de b est une superclasse de B ) il est où le type déclaré de b dans l'instruction A a = (B) b ? (mes questions sont stupides? desolé mais je viens de commencer le cours)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 A a = new A(); B b = new B(); a=b;
3 ème question : recherche de la méthode à exécuter :
soit le code suivant :
qu'est ce qu'affichera l'exécution de la méthode main de B ?
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 class A{ void m(A a){ System.out.println("m de A"); } void n(A a){ System.out.println("n de A"); } } class B extends A{ void m(A a){ System.out.println("m de B"); } void n(B b){ System.out.println("n de B"); } public static void main(String[] argv){ A a = new B(); B b = new B(); a.m(b); a.n(b); } }
Réponse:
m de B
n de A
pourquoi ce choix de méthodes ?
Partager