Bonjour,
J'ai (encore) une question
J'illustre par un bout de code :
Comme on peut le voir, j'ai une classe mere et une classe fille qui override une méthode de la classe mère.
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 class Mere{ public void sayHello() { System.out.println("Hello Mere"); } } class Fille extends Mere{ @Override public void sayHello() { System.out.println("Hello Fille"); } } public class UpcastingTest implements Test { @Override public void run() { Fille f = new Fille(); Mere m = (Mere)f; m.sayHello(); } }
La méthode run montre que lorsque j'upcast un objet, c'est just le type de la référence qui change, l'objet lui, reste du même type et donc lorsque j'appelle la méthode qui a été overridé c'est bien la méthode de la classe fille qui est exécuté.
Ya t'il un moyen d'upcaster l'objet en lui même (ce qui créerai un nouvel objet et les données propres à la classe fille serait perdu)??? Ou sinon existe-t'il un moyen d'appeler la méthode "non-overrider"????
Evidemment je cherche d'une solution dans la méthode run... en bref sans modifier un seul bout de code des classes Mere et Fille
PS: En y réfléchissant, on peut se dire qu'on aura jamais besoin de faire sa et que c'est complètement inutile et qu'en plus c'est complètement contraire à la logique objet de vouloir faire ça... En effet, certes, mais je veux quand même savoir si c'est possible![]()
Partager