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 :

[débutant] Le transtypage


Sujet :

Langage Java

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 5
    Par défaut [débutant] Le transtypage
    Bonjour, j'ai un mal fou pour comprendre les dessous de Java et cet exemple me laisse dubitatif.
    Pourquoi le programme affiche-t-'il "B" alors que l'on a transtypé l'objet de type B en A, et devrait donc appelé la méthode m() de la classe A ?

    Meric d'avance


    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
     
    //A.java
    package monPackage;
     
    public class A 
    {
    	public void m()
    	{
    		System.out.println("A");
    	}
    }
     
    //B.java
    package monPackage;
     
    public class B extends A 
    {
    	public void m()
    	{
    		System.out.println("B");
    	}
    }
     
    //Main.java
    package monPackage;
     
    public class Main 
    {
    	public static void main(String args[])
    	{
    		A b = new B();
    		((A)b).m();
    	}
    }

  2. #2
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,


    C'est simple : en Java toutes les méthodes sont virtuelles par défaut. Ainsi, la méthode à exécuter est déterminé à l'exécution selon le vrai type de l'objet.

    Donc quel que soit le type déclaré ou transtypé dans le code source, c'est le vrai méthode de l'instance de l'objet qui sera appelé.

    C'est une des nombreuses différences dans les principes de POO entre C++ et Java

    a++

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 5
    Par défaut
    Ok, merci pour ta réponse

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

Discussions similaires

  1. débutant : question technique sur transtypage
    Par flamant dans le forum C++
    Réponses: 9
    Dernier message: 22/01/2007, 11h32
  2. [Kylix] Re Re: débutant sur Kylix et Linux.....
    Par Eclypse dans le forum EDI
    Réponses: 2
    Dernier message: 08/06/2002, 22h53
  3. [Kylix] Le débutant en Kylix et Linux....
    Par Eclypse dans le forum EDI
    Réponses: 2
    Dernier message: 08/05/2002, 10h37
  4. Réponses: 3
    Dernier message: 07/05/2002, 16h06
  5. [HyperFile] 2 questions de débutant
    Par khan dans le forum HyperFileSQL
    Réponses: 2
    Dernier message: 29/04/2002, 23h18

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