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 :

nuance instanciation d'objet


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Etudiant
    Inscrit en
    Septembre 2012
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Etudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2012
    Messages : 69
    Par défaut nuance instanciation d'objet
    Bonjour,

    Pour commencer imaginons que ma classe Loup hérite de la classe Animal.

    je me demande quelles sont les différences entre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Animal A = new Loup();
    Loup B = new Loup();
    Object C = new Loup();
    Je vous remercie d'avance.

  2. #2
    Membre chevronné
    Homme Profil pro
    Ed Nat
    Inscrit en
    Janvier 2013
    Messages
    325
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Ed Nat
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2013
    Messages : 325
    Par défaut
    Bonjour,
    Aucune différence du point de vue du contenu : A, B et C contiennent des Loups.

    mais la déclaration 1 est plus intéressante, puisqu'elle permettra de mettre en oeuvre le polymorphisme d'héritage.

    Admettons que la classe Animal déclare le comportement suivant (aptitude à crier)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    public abstract class Animal {
    	public abstract void crier();
    }
    Que tu aies une classe dérivée Chat de Animal qui implémente Crier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Class Chat extends Animal{
    	@Override
    	public void crier(){
    		system.out.println("miaulement");
    }
    Que tu fasses de même pour le loup

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Class Loup extends Animal{
    	@Override
    	public void crier(){
    		system.out.println("Hurlement");
    }

    En ayant déclaré
    L'appel suivant provoquera soit des hurlements, soit des miaulements à l'exécution, en fonction de ce que le programme aura affecté comme instance d'animal à unAnimal. C'est ce qu'on appelle le polymorphisme.
    Ca ne serait pas possible si on déclarait unAnimal en tant que Loup directement :

  3. #3
    Membre confirmé
    Homme Profil pro
    Etudiant
    Inscrit en
    Septembre 2012
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Etudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2012
    Messages : 69
    Par défaut
    Premièrement merci de votre réponse rapide et efficace.


    Donc si j'ai bien compris, je déclare
    Ensuite j'instancie unAnimal en loup ou chat en fonction de mes besoin?
    Par exemple, si je veux que unAnimal miaule je ferai
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    unAnimal = new Chat();
    unAnimal.crier();

  4. #4
    Membre chevronné
    Homme Profil pro
    Ed Nat
    Inscrit en
    Janvier 2013
    Messages
    325
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Ed Nat
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2013
    Messages : 325
    Par défaut
    Exactement !
    et on a encore plus une impression de magie (polymorphe) lorsque c'est le déroulement du programme (intervention de l'utilisateur ou le temps qui passe) qui transforme l'animal en Chat pour le faire miauler...

    Je veux dire pas là que la ligne de code toute seule :

    unAnimal.crier();

    ne permet pas de savoir quel sera le cri entendu (à la compilation) et que seule l'exécution du programme permettra de le savoir

  5. #5
    Membre confirmé
    Homme Profil pro
    Etudiant
    Inscrit en
    Septembre 2012
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Etudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2012
    Messages : 69
    Par défaut
    Je vous remercie.

    Bonne soirée.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Reflection] Instancier un objet
    Par bl@st dans le forum API standards et tierces
    Réponses: 4
    Dernier message: 28/10/2008, 11h09
  2. [POO] Instancier un objet avec le nom de la classe
    Par shinchun dans le forum Langage
    Réponses: 4
    Dernier message: 08/06/2006, 13h44
  3. Réponses: 4
    Dernier message: 08/03/2006, 19h07
  4. Réponses: 6
    Dernier message: 18/01/2006, 16h26
  5. instancier un objet Excel
    Par RobinNono dans le forum ASP
    Réponses: 1
    Dernier message: 13/12/2005, 15h51

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