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 :

[Héritage] Comment savoir qu'une instance de classe est étendue par une autre ?


Sujet :

Langage Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2007
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 17
    Points : 15
    Points
    15
    Par défaut [Héritage] Comment savoir qu'une instance de classe est étendue par une autre ?
    Bonsoir,
    J'ai conscience que mon titre est pas super explicite, j'ai du mal à formuler le problème (peut être que c'est pour ça que je n'ai pas trouvé de réponse sur le net)

    Si j'ai une classe A, et une autre B qui hérite de A, si je fait new B(), est-ce qu'il est possible de savoir depuis une méthode de A qu'en fait c'est un objet B ?

    par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    public class A {
        public A() {
              //Je suis un A ou un B ?
        }
    }

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public class B extends A {
        public B() {
        }
    }
    Désolé pour la clarté de l'énoncé...
    Merci

  2. #2
    Membre averti
    Inscrit en
    Mars 2008
    Messages
    283
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 283
    Points : 380
    Points
    380
    Par défaut
    Oui, via un cast !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if (monInstanceA instanceof B) {
    B monInstanceB = (B) monInstanceA;
    //... Ici, tout le code à faire si ton instance est bien de la classe B.
    }
    monInstanceB sera reconnue par la JVM comme une instance de la classe B, tu peux donc utiliser toutes les méthodes de B qui n'existaient pas dans A. Mais l'objet en question est toujours le même ! (En fait c'est plus un problème de "es tu sur de savoir faire qqch ou pas")

  3. #3
    Expert éminent
    Avatar de djo.mos
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 666
    Points : 7 679
    Points
    7 679
    Par défaut
    Bonsoir,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    class A {
    	public A() {		
    		if(getClass().equals(A.class))
    			System.out.println("Original");
    		else
    			System.out.println("Etendu");
    	}
    }

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2007
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 17
    Points : 15
    Points
    15
    Par défaut
    Merci à vous deux pour vos réponses si rapides !
    J'ai commencé par tester la proposition de djo.mos et elle fonctionne parfaitement.
    Du coup je n'ai pas essayé celle de Grimly mais j'imagine qu'elle peut également faire l'affaire.

    Encore merci, et bravo d'avoir réussi à comprendre ce que j'ai difficilement demandé ^_^

  5. #5
    Membre expert
    Avatar de natha
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 346
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 346
    Points : 3 083
    Points
    3 083
    Par défaut
    Celle de djo.mos est réversible, l'autre non.
    Je veux dire qu'avec la réversible tu peux tester si c'est un B ou si c'est un A. Avec le instanceof ce n'est pas pareil, comme B étend A, b sera considéré une instance de B ET de A donc b instanceof A renverra true.
    Comment ça ? La réponse à ton problème n'est ni dans la faq, ni dans les tutos, ni dans sources ??? Etonnant...
    De la bonne manière de poser une question (et de répondre).
    Je ne fais pas de service par MP. Merci (...de lire les règles...).
    Ma page dvp.com

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 07/10/2011, 10h21
  2. Comment créer une liste ou une instance de classe dans une fonction ?
    Par Neolander dans le forum Général Python
    Réponses: 9
    Dernier message: 05/03/2008, 19h22
  3. Taille d'une classe et non d'une instance
    Par OrangeBud dans le forum Général Java
    Réponses: 1
    Dernier message: 12/04/2006, 12h08
  4. Réponses: 3
    Dernier message: 18/02/2006, 23h21
  5. Exporter une instance de classe au format XML ou XMI
    Par Scorpion Rouge dans le forum Persistance des données
    Réponses: 2
    Dernier message: 22/12/2005, 11h19

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