IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Java Discussion :

Upcasting et méthode overrider


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de Braillane
    Profil pro
    Développeur Java
    Inscrit en
    Janvier 2007
    Messages
    212
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Janvier 2007
    Messages : 212
    Par défaut Upcasting et méthode overrider
    Bonjour,
    J'ai (encore) une question
    J'illustre par un bout de code :
    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();
    	}
     
    }
    Comme on peut le voir, j'ai une classe mere et une classe fille qui override une méthode de la classe mère.
    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

  2. #2
    Membre Expert
    Inscrit en
    Août 2009
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 1 073
    Par défaut
    C'est en effet totalement contraire à l'esprit de l'objet !
    La meilleure solution serait un constructeur dans la classe mère qui prenne un objet de la classe mère en argument, en faisant une copie.

Discussions similaires

  1. Réponses: 4
    Dernier message: 17/07/2013, 20h46
  2. Réponses: 4
    Dernier message: 15/07/2011, 14h08
  3. Débutant : méthode override OnLoad(e) ?
    Par betsprite dans le forum C#
    Réponses: 3
    Dernier message: 23/07/2010, 19h20
  4. UpCasting non respecté avec une méthode surchargée
    Par Nicolas Dansel dans le forum Langage
    Réponses: 9
    Dernier message: 27/05/2009, 14h46
  5. override partiel dans une méthode dérivée
    Par cyberchand dans le forum C#
    Réponses: 2
    Dernier message: 17/04/2007, 10h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo