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

Java Discussion :

Polymorphisme les différents cas de "Parent PC = new Child();"


Sujet :

Java

  1. #1
    Membre du Club
    Homme Profil pro
    Consultant ERP
    Inscrit en
    Février 2018
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2018
    Messages : 4
    Par défaut Polymorphisme les différents cas de "Parent PC = new Child();"
    Bonjour,

    Je suis nouveau en développement orienté objet, et en Java. En ce moment je suis au polymorphisme.
    Et j'ai écrit quelques lignes pour faire des tests, mais cela m'a encore plus embrouillé car je ne trouve pas les mêmes résultats.
    En effet :
    PC.mP_1(); // "mP_1_Child" => C'est l'enfant qui est pris en comptes
    Obj_1.m1(PC); // "Parent" => C'est le père qui est pris en comptes

    C'est quoi la logique ? Pour quoi une fois c'est le père qui est pris en compte et une autre fois l'enfant ?

    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
     
    class Parent {
    	void mP_1(){
    		System.out.println("mP_1_Parent");
    	}
    }
    class Child extends Parent {
    	void mP_1(){
    		System.out.println("mP_1_Child");
    	}
    }
    public class Test_Pere_Fils_Refernce{
    	public void m1(Parent A){
    		System.out.println("Parent");
    	}
    	public void m1(Child m){
    		System.out.println("Child");
    	}
    	public static void main(String[] args){
     
    // Reference Pere/Objet Enfant
    		Parent PC = new Child(); 
     
    		Test_Pere_Fils_Refernce Obj_1 = new Test_Pere_Fils_Refernce();
     
    // ??? Je ne comprends pas la différence dans la logique !!
    // ??? Une fois c'est le père qui est pris en compte et parfois c'est l'enfant
    // ??? C'est quoi la règle ici ?
     
    		PC.mP_1(); // "mP_1_Child" => C'est l'enfant qui est pris en comptes
    		Obj_1.m1(PC); // "Parent" => C'est le père qui est pris en comptes
     
    	}
    }

  2. #2
    Membre Expert
    Avatar de professeur shadoko
    Homme Profil pro
    retraité nostalgique Java SE
    Inscrit en
    Juillet 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : retraité nostalgique Java SE

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 257
    Par défaut
    ta méthode m1 ne teste pas le type effectif:
    ça marche comme ça: un fils est un parent mais le type utilisé par le compilateur est celui de PC mais ce n'est pas le type effectif
    il faudrait que dans m1 tu appelles la bonne méthode du parent et tu verras que c'est correct: ce que tu passes est vraiment un fis

Discussions similaires

  1. Réponses: 2
    Dernier message: 18/08/2005, 12h42
  2. Récupérer les différentes températures de mon PC
    Par bronco dans le forum Assembleur
    Réponses: 2
    Dernier message: 29/07/2005, 09h35
  3. Réponses: 3
    Dernier message: 24/05/2005, 12h35
  4. [Débutant] Les opcodes sur les différents processeurs
    Par loverdose dans le forum Assembleur
    Réponses: 11
    Dernier message: 03/02/2005, 13h32
  5. faire un group by sur les différents niveau de code
    Par speed034 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 07/10/2004, 16h10

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