Bonjour
Qui peut m'expliquer cette phrase :
"Lorsqu'un objet est sur-classé il est vu comme un objet du type de la référence utilisée pour le désigner."
Grand merci.
Bonjour
Qui peut m'expliquer cette phrase :
"Lorsqu'un objet est sur-classé il est vu comme un objet du type de la référence utilisée pour le désigner."
Grand merci.
Bonjour,
Prenons pour exemple un cas concret :
Avec l'utilisation qui en est faire suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 public class A { public void a() { System.out.println("a"); } } public class B extends A { public void b() { System.out.println("b"); } }
L'explication est la suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 public class M { public static void main(String[] argv) { B b = new B(); A a = new B(); new B().b(); b.b(); a.b(); // aie ici ca ne compilera pas } }
Lorque l'on invoque une méthode, elle sera appliquée à la référence sur laquelle on fait l'appel. Si la méthode fait partie de la signature de la référence alors pas de problèmes, si on se retrouve avec une référence possédant une signature moins riche que celle de l'instance (typiquement par la polymorphie), alors l'invocation échouera.
Plus clairement, si b() ne fait pas partie de A (puisque a est de type A), et ceci même si l'instance est de type B, alors on ne peut faire d'appel de b depuis a sans effectuer un cast.
Ici on règle le problème comme suit :
J'espère avoir pu t'aider
Code : Sélectionner tout - Visualiser dans une fenêtre à part ((B) a).b();
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager