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]Héritage


Sujet :

Langage Java

  1. #1
    Membre du Club
    Inscrit en
    Mars 2003
    Messages
    109
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 109
    Points : 49
    Points
    49
    Par défaut [Débutant]Héritage
    Bonjour;
    J'ai des questions ou concerant java, j'admets que ces des questions d'un examen , auquels j'aimerai avoir une réponse pour chacune pour me préparé à mon futur examen...

    Soit une classe B qui hérite d’une classe A
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    public class A {
    void f() {
    }
     
    ...
    }
    public class B extends A {
    void f() {
    }
    void f(String s) {
    }
    ...
    }
    On instancie un objet de la classe B : Est-il licite d’écrire : Ou bien faut-il écrire : Comment se nomme cette opération et quel est son intérêt et son utilisation ?

    Après cette opération si on appelle la méthode f sur a:
    Est-ce la méthode de la classe A ou bien celle de la classe B qui est appelée ?
    Est-il licite d’écrire et sinon quelle est l'erreur générée:
    Enfin, soit une référence sur un objet A
    Est-il licite d’écrire et sinon quelle est l'erreur générée:
    Comment se nomme cette opération et quel est son intérêt et son utilisation?


    Merci beaucoup

  2. #2
    Membre éclairé Avatar de Pollux
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    706
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2005
    Messages : 706
    Points : 680
    Points
    680
    Par défaut
    Pour t'entrainer tu n'as qu'à tester
    Pour chaque langage existe une faq / N'oubliez pas de lire les règles du forum

  3. #3
    Membre habitué Avatar de Oui-Oui MB
    Homme Profil pro
    Architecte technique
    Inscrit en
    Avril 2005
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Avril 2005
    Messages : 111
    Points : 127
    Points
    127
    Par défaut
    Tu peux faire
    Ca s'appelle un downcasting. Si tu appelles la méthode a.f(); c'est la méthode f de la classe B qui sera executée. Par contre, tu ne pourras pas appeller f(String s) car ce n'est pas une méthode de la classe A.

    En ce qui concerne
    Ca s'appelle un upcasting et c'est possible si aa est de type B (ou un type hérité de B).
    Que la Schtuche soit avec vous !!!

  4. #4
    Membre du Club
    Inscrit en
    Mars 2003
    Messages
    109
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 109
    Points : 49
    Points
    49
    Par défaut
    Merci "Oui-Oui MB" pour tes réponses, c'est à peu près ce que je pensais, tu ma eclairci

  5. #5
    Membre du Club
    Inscrit en
    Mars 2003
    Messages
    109
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 109
    Points : 49
    Points
    49
    Par défaut
    Si tu appelles la méthode a.f(); c'est la méthode f de la classe B qui sera executée. Par contre, tu ne pourras pas appeller f(String s) car ce n'est pas une méthode de la classe A.
    Pourquoi c'est la méthode f de la calsse B qui sera executée lorsqu'on fait a.f(), puisque A aussi contient la méthode f, en plus B hérite de A ???

    Merci

  6. #6
    Membre éclairé Avatar de Pollux
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    706
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2005
    Messages : 706
    Points : 680
    Points
    680
    Par défaut
    Parce que dans la classe B la méthode f surcharge celle de la classe A qui est à un niveau hiérarchique supérieure
    Pour chaque langage existe une faq / N'oubliez pas de lire les règles du forum

  7. #7
    Expert éminent sénior
    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
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,

    Citation Envoyé par Ryadus
    Pourquoi c'est la méthode f de la calsse B qui sera executée lorsqu'on fait a.f(), puisque A aussi contient la méthode f, en plus B hérite de A ???
    Parce qu'en Java toutes les méthodes sont "virtuelles" par défaut.

    Le downcasting est possible car ton objet b est "une sorte de" A (au passage il n'y a pas besoin de cast explicite dans ce cas) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    B b = new B();
    A a = b; // (A)b est inutile puisque B extends A
    Mais lorsque tu fais :
    A l'exécution, la JVM déterminera le type réel de "a" (B dans ce cas) et appellera donc la méthode f() de B puisqu'elle y est redéfinit. Si la classe B n'avait pas redéfini la méthode f(), alors ce serait la méthode f() de A qui aurait été appellé...

    a++

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

Discussions similaires

  1. [débutant][héritage] ou pas
    Par luta dans le forum Schéma
    Réponses: 7
    Dernier message: 13/10/2006, 16h04
  2. Réponses: 3
    Dernier message: 15/05/2006, 19h04
  3. [Débutante] Héritage
    Par Tootsi dans le forum 2D
    Réponses: 6
    Dernier message: 13/03/2006, 17h44
  4. [débutant]héritage
    Par pacha1 dans le forum Langage
    Réponses: 4
    Dernier message: 26/05/2004, 17h12
  5. [Débutant] Héritage & appel de méthodes
    Par KooX dans le forum Langage
    Réponses: 4
    Dernier message: 11/05/2004, 23h37

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