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 :

Etendre une classe qui appartient a un package


Sujet :

Langage Java

  1. #1
    Membre régulier
    Profil pro
    Consultant informatique
    Inscrit en
    Février 2004
    Messages
    93
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Février 2004
    Messages : 93
    Points : 80
    Points
    80
    Par défaut Etendre une classe qui appartient a un package
    Bonjour,

    Voilà : ma question est presque entièrement dans le sujet !

    J'ai une classe A qui appartient à un package B.

    Dans ma classe C, je voudrais étendre A :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    import B.A;
    public class C extends A
    {
    // code
    }
    Le compilateur me dit "cannot find symbol" :

    symbol : constructor A()
    location: class B.A

    C'est quand même pas normal que le constructeur par défaut ne soit pas présent ?!

    Merci pour votre aide ! Je précise que je n'ai pas accès au code de A (je n'ai que le .class)

  2. #2
    Membre régulier
    Inscrit en
    Juillet 2006
    Messages
    74
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Juillet 2006
    Messages : 74
    Points : 90
    Points
    90
    Par défaut
    tu compiles comment ? en ligne de commande ? avec un EDI ?
    en compilant tu mets bien le .class de A dans ton classpath ?

  3. #3
    Membre chevronné
    Avatar de afrikha
    Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    1 600
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2005
    Messages : 1 600
    Points : 2 208
    Points
    2 208
    Par défaut
    Citation Envoyé par agent007se

    C'est quand même pas normal que le constructeur par défaut ne soit pas présent ?!
    Si un autre constructeur a été défini, le constructeur "par défaut" n'existe pas.

  4. #4
    Membre régulier
    Profil pro
    Consultant informatique
    Inscrit en
    Février 2004
    Messages
    93
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Février 2004
    Messages : 93
    Points : 80
    Points
    80
    Par défaut
    drixfkc > NetBeans... donc il fait bien ce que tu dis

    afrikha > oui un autre constructeur a été défini... (edit : appelons-le "public A(file f) {/*code*/}")

    La question reste : comment puis-je faire pour étendre ma classe C ??

  5. #5
    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 agent007se
    La question reste : comment puis-je faire pour étendre ma classe C ??
    Il faut que tu appelles explicitement le constructeur parent :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    public class C extends A {
     
    	public C() {
    		super(new File(""));
    	}
     
    	// et/ou
     
    	public C(File file) {
    		super(file);
    	}
    }
    Il faut savoir deux choses :
    • La première instruction d'un constructeur doit correspondre à l'appel du constructeur de la classe parente (via un super() explicite ou non) ou à l'appel d'une autre version de constructeur de la même classe (via this()).
    • Si une classe ne définit aucun constructeur, un constructeur publique par défaut (sans paramètre) est automatiquement généré par le compilateur.


    Donc ces trois codes sont strictement équivalent (et ne peuvent compiler que si A possède un constructeur sans arguments) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public class C extends A {
     
    	public C() {
    		// rien
    	}
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public class C extends A {
     
    	public C() {
    		super();
    		// rien
    	}
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public class C extends A {
     
    }
    a++

  6. #6
    Membre régulier
    Profil pro
    Consultant informatique
    Inscrit en
    Février 2004
    Messages
    93
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Février 2004
    Messages : 93
    Points : 80
    Points
    80
    Par défaut
    Merci beaucoup adiGuba !

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

Discussions similaires

  1. Appeler une classe qui appartient au default package
    Par hamzawhy dans le forum Débuter avec Java
    Réponses: 12
    Dernier message: 17/05/2012, 14h51
  2. [DEBUTANT] Ouvrir une classe qui est dans le meme package
    Par quake3 dans le forum Débuter avec Java
    Réponses: 3
    Dernier message: 22/09/2009, 14h03
  3. Réponses: 14
    Dernier message: 14/03/2005, 09h16
  4. [heritage] etendre une classe interne en dehors du package
    Par ChristopheH dans le forum Langage
    Réponses: 2
    Dernier message: 11/10/2004, 14h15
  5. destruction d'une classe qui herite de CDialog
    Par philippe V dans le forum MFC
    Réponses: 2
    Dernier message: 03/02/2004, 17h39

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