Polymorphisme
Résolu
Aminax
Messages postés
88
Statut
Membre
-
Aminax Messages postés 88 Statut Membre -
Aminax Messages postés 88 Statut Membre -
Bonjour,
j'ai eu des lacunes de comprendre le plymorphisme !
est ce que vous pouvez me l'expliquer d'une manière simple ce code et merci d'avance !
l'appel de "a.f()" est-il relatif à la version "f()" de A ou de B?
Svp
j'ai eu des lacunes de comprendre le plymorphisme !
est ce que vous pouvez me l'expliquer d'une manière simple ce code et merci d'avance !
class A{la question qui se pose :
public void f(){...}
class B extends A{
public void f(){...}
}
et A a = new B();
}
l'appel de "a.f()" est-il relatif à la version "f()" de A ou de B?
Svp
3 réponses
L'appel se fait toujours sur l'objet, ici tu as fait un new B() donc la méthode appelée est celle définie en B.
Le polymorphisme permet d'avoir des objets de différents types (A, B, C...) pour lesquels la méthode f existe (même si elle ne fait pas la même chose) et d'utiliser cette méthode comme si tous les objets étaient tous de type A.
Un exemple "simple" de polymorphisme c'est la méthode toString, elle est définie par la classe Object mais c'est celle de l'objet (donc la plus spécifique) qui est utilisé. C'est grâce à cela que l'on peut faire des méthodes polymorphe comme System.out.println(Object obj) qui fait juste un appel obj.toString()
Le polymorphisme permet d'avoir des objets de différents types (A, B, C...) pour lesquels la méthode f existe (même si elle ne fait pas la même chose) et d'utiliser cette méthode comme si tous les objets étaient tous de type A.
Un exemple "simple" de polymorphisme c'est la méthode toString, elle est définie par la classe Object mais c'est celle de l'objet (donc la plus spécifique) qui est utilisé. C'est grâce à cela que l'on peut faire des méthodes polymorphe comme System.out.println(Object obj) qui fait juste un appel obj.toString()
Pour faire simple.
Tu as deux objets, un A et un B
Dans chaque classe (A et B) tu as une méthode m();
Tu es d'accord que tu peux écrire deux méthodes différentes ? exemple :
pour la classe A : m() { System.out.println("salut"); }
pour la classe B : m() { System.out.println("bonjour"); }
Si tu créer un objet A, et que tu fais A.m();
Tu auras le message "salut" à l'écran.
En revanche, si tu fais B.m();
Tu auras le message "bonjour" à l'écran.
J'espère t'avoir aidé ;)
Tu as deux objets, un A et un B
Dans chaque classe (A et B) tu as une méthode m();
Tu es d'accord que tu peux écrire deux méthodes différentes ? exemple :
pour la classe A : m() { System.out.println("salut"); }
pour la classe B : m() { System.out.println("bonjour"); }
Si tu créer un objet A, et que tu fais A.m();
Tu auras le message "salut" à l'écran.
En revanche, si tu fais B.m();
Tu auras le message "bonjour" à l'écran.
J'espère t'avoir aidé ;)