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

avec Java Discussion :

heritage probleme déclaration


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    542
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 542
    Par défaut heritage probleme déclaration
    Bonjour,

    J'ai une classe B qui hérite de A.

    A possède une méthode ajout(int i, int j)


    Si dans la classe B, je déclare la même méthode même arguments mais modification dans la méthode .

    Laquelle sera appelé si je suis dans la classe B?

    Car je possède des codes mutualisé se trouvant dans des méthodes mais dépend de la classe où je les appelle?
    Merci.

  2. #2
    Membre très actif
    Inscrit en
    Novembre 2010
    Messages
    221
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 221
    Par défaut heritage probleme déclaration
    slt ce donc tu te propose de fait est appelle une surcharge car tu réécrit le code d'une méthode hérite dans ta classe B . Donc dans B et pour les autres classe qui hériterons aussi sa serra ta nouvelle méthode ajout qui sera appelle.
    a++

  3. #3
    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
    Citation Envoyé par narutoe Voir le message
    slt ce donc tu te propose de fait est appelle une surcharge
    Java a une terminologie précise dans ses specs:

    si il existe une méthode m(int arg) dans classe A:

    - si on définit par exemple m(int arg, String c) on a une surcharge (terme officiel en anglais overloading )

    - si dans B extends A on a m(int arg) on a une spécialisation (terme officiel en anglais overriding)

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    542
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 542
    Par défaut
    Prenons un exemple:

    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
     
    public class A{
     
    public void ajout(int i,int j{
     
    System.out.println(""+(i+j));
    affiche(i+j);
    }
     
    public void affiche(int r){
     
    System.out.println("résultat1="+r);
    }
     
    }
     
     
    public class B extends A{
     
    public B(){
    ajout(a,b);
    }
     
    public void affiche(int r){
     
    System.out.println("résultat2="+r);
    }
     
    }

    Quel méthode affiche sera appelé ?

  5. #5
    Membre chevronné
    Homme Profil pro
    IUT Informatique
    Inscrit en
    Mars 2011
    Messages
    412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : IUT Informatique

    Informations forums :
    Inscription : Mars 2011
    Messages : 412
    Par défaut
    Si je me trompe pas, c'est la méthode de ta class A qui sera utiliser.
    T'appel ajout de ta class A, et cette méthode appel une méthode affiche, et elle connait que celle de ta class A.

  6. #6
    Modérateur

    Avatar de Robin56
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juin 2009
    Messages
    5 297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juin 2009
    Messages : 5 297
    Par défaut
    Il va prendre celle à côté donc de la classe A. En plus dans la sur-classe, pas de question à se poser, il appellera forcément la méthode de cette classe. Il faut te dire que A n'a pas connaissance qu'il existe une sous-classe d'elle-même.

    La question se pose plutôt dans le cadre de la sous-classe. Car elle a connaissance qu'il existe une sur-classe au dessus elle. Si la méthode "affiche()" de la classe B n'existe pas. Si B appelle affiche(), là c'est la méthode de la classe A qui va être appelé.
    Responsable Java de Developpez.com (Twitter et Facebook)
    Besoin d'un article/tutoriel/cours sur Java, consulter la page cours
    N'hésitez pas à consulter la FAQ Java et à poser vos questions sur les forums d'entraide Java
    --------
    Architecte Solution
    LinkedIn : https://www.linkedin.com/in/nicolascaudard/

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    294
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 294
    Par défaut
    Pourquoi tu fais pas seulement un petit essaye pour voir quelle méthode sera appelé

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    542
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 542
    Par défaut
    Je n'ai pas de compilateur sur moi je suis sur un téléphone mobile.

    Si je crée une classe C auquel je crée une instance de la classe B et je fais appel à affiche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    B b=new B();
    b.affiche(6);
    Quel méthode sera appelé?

Discussions similaires

  1. [VBA] Probleme déclaration de variable
    Par Léponge85 dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 11/06/2008, 14h57
  2. Probleme déclaration fonction...
    Par bixi dans le forum Langage
    Réponses: 5
    Dernier message: 30/01/2006, 19h52
  3. [SURGHARGE][HERITAGE] Probleme compilation
    Par SpongeBob dans le forum C++
    Réponses: 23
    Dernier message: 27/11/2005, 20h33
  4. [Delphi 2005 Perso] Probleme déclaration de méthode
    Par alk dans le forum Delphi .NET
    Réponses: 5
    Dernier message: 08/11/2005, 16h19
  5. [C++] Heritage - Probleme constructeur
    Par yanndublanche dans le forum Débuter
    Réponses: 2
    Dernier message: 04/08/2004, 10h17

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