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 :

Classes et fonctions friend ?


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    lkjlgj
    Inscrit en
    Février 2007
    Messages
    255
    Détails du profil
    Informations personnelles :
    Localisation : Angola

    Informations professionnelles :
    Activité : lkjlgj

    Informations forums :
    Inscription : Février 2007
    Messages : 255
    Par défaut Classes et fonctions friend ?
    Bonjour !

    J'ai une question concernant les classes et l'accès aux fonctions.

    Soient une Classe A contenant une méthode AM et une classe B.
    Comment je peux faire pour que B accède à AM sans pour autant inclure
    via import la définition de A dans B et vice-versa ?

    Je pensais pouvoir refiler un pointeur de fonction à B sans devoir l'informer
    sur tout ce qui concerne la classe A.
    Mais en Java, y'a pas de pointeurs, pas vrai ???

    Je ne sais pas si j'ai été clair.

  2. #2
    Modérateur
    Avatar de Alkhan
    Homme Profil pro
    ingénieur full stack
    Inscrit en
    Octobre 2006
    Messages
    1 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : ingénieur full stack

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 232
    Par défaut
    bonjour,

    Pour que B accède a A sans faire l'import, il suffit qu'elles soient simplement dans le même package et que la methode ne soit pas en private.

    Mais que veux tu faire exactement ? l'import fait partis de l'utilisation courante des classes en java !
    Il n'y a pas de problème, il n'y a que des solutions.
    Cependant, comme le disaient les shadoks, s'il n'y a pas de solution, c'est qu'il n'y a pas de problème.
    Si toutefois le problème persiste, la seule solution restante est de changer le périphérique qui se trouve entre la chaise et l'écran

    Mes Articles : Mon premier article est sur le language D
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre Expert Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 679
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Tourneur Fraiseur

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 679
    Par défaut
    Comment je peux faire pour que B accède à AM sans pour autant inclure
    via import la définition de A dans B et vice-versa ?
    Si A et B sont dans le même package, AM est accessible depuis B sans import, sauf s'il est déclaré private.

    Mais en Java, y'a pas de pointeurs, pas vrai ???
    En java, il n'y a en effet pas de pointeurs sur les type de base (int,double,char,...).
    En revanche, pour l'es objets c'est le contraire : ils sont obligatoirement manipulés via pointeur, même si en Java on parle plutôt de référence.
    Le code java suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Object objet = new Object();
    objet.maMéthode();
    correspond en fait au code C++ suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Object *objet = new Object();
    objet->maMéthode();

  4. #4
    Membre éclairé
    Profil pro
    lkjlgj
    Inscrit en
    Février 2007
    Messages
    255
    Détails du profil
    Informations personnelles :
    Localisation : Angola

    Informations professionnelles :
    Activité : lkjlgj

    Informations forums :
    Inscription : Février 2007
    Messages : 255
    Par défaut
    Si A et B sont dans le même package, AM est accessible depuis B sans import, sauf s'il est déclaré private ??

    Euh..., je crois bien que c'est le cas. Mais je dois me tromper quelquepart.
    Je travaille dans Eclipse et l'arborescence de mon projet est la suivante :

    Prog
    --->src
    --------->Default package
    --->Classe A avec méthode public static void AM ()
    --->Classe B

    Est-ce que je dois reconfigurer le Default Package ? Parce pour l'instant,
    B ne connait pas AM().

  5. #5
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    on peu voir le code de tes deux classes? Parce qu'une méthode publique est accessible de partout.

  6. #6
    Membre émérite Avatar de herch
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    655
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2006
    Messages : 655
    Par défaut
    salut,

    tu fais comment pour appeler ta méthode AM dans la classe B ??

    si tu fais simplement ça ne marchera pas, puisque ça voudra dire que AM() est une méthode de B, il faudra plutôt faire puisque AM() est static, et si elle ne l'était pas, il faudrait alors mettre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    A a = new A();
    a.AM();

  7. #7
    Membre éclairé
    Profil pro
    lkjlgj
    Inscrit en
    Février 2007
    Messages
    255
    Détails du profil
    Informations personnelles :
    Localisation : Angola

    Informations professionnelles :
    Activité : lkjlgj

    Informations forums :
    Inscription : Février 2007
    Messages : 255
    Par défaut
    Salut Herch !

    MERCI.
    Je viens d'essayer A.AM() et ça marche !

    Effectivement la méthode AM étant static on peut l'appeler
    sans qu'il existe une instance a de la classe A. Je comprends.

    Désolé je m'étais égaré dans une recherche du coté 'pointeur de fonction'.
    Et puis l'absence totale d'un import (équivalent des include du C) m'avait
    laissé perplexe quant à la visibilité de la méthode depuis une classe externe.

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    268
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 268
    Par défaut
    Cela m'intrigue, pourquoi veux-tu appeler une méthode d'une classe sans la déclarer dans les imports ?

Discussions similaires

  1. Problème de fonction friend sur trois classes.
    Par méphistopheles dans le forum C++
    Réponses: 5
    Dernier message: 18/03/2007, 11h20
  2. [classe ou fonction] fonction magic number ?
    Par Leinad dans le forum Langage
    Réponses: 13
    Dernier message: 28/07/2006, 17h58
  3. Classes ou fonctions ?
    Par alceste dans le forum C++
    Réponses: 6
    Dernier message: 27/06/2006, 12h44
  4. problème classe et fonction
    Par zmatz dans le forum C++
    Réponses: 14
    Dernier message: 19/10/2005, 21h46
  5. Classes - Sub/Fonction vs Property
    Par j_bolduc dans le forum ASP
    Réponses: 6
    Dernier message: 24/08/2005, 19h19

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