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 :

"Surchage" de Constructeur


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
    Février 2007
    Messages
    899
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 899
    Par défaut "Surchage" de Constructeur
    Bonjour à tous et bon confinement...
    J'ai une classe avec deux constructeurs :
    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
     
    public class Article {
      private String ref;
      private String des;
      protected double prix;
      private static int nbInstances; 
     
    //Constructeurs
    public Article() {
      ref="";
      des="";
      prix=0;
      nbInstances++;
     
     
      }
    public Article(String ref,String des, double prix) {
      this.ref=ref;
      this.des=des;
      this.prix=prix;
      nbInstances++;
      }
      }
    et une autre classe Livre dérivée de Article :
    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
     
    public class Livre extends Article{
      private long ISBN;
      private short nbre_pages;
      private String Auteur;
     
      //Constructeurs
      public Livre() {
    	  super();
    	  ISBN=0;
    	  nbre_pages=0;
    	  Auteur="";
      }
      Article a=new Article();
     
      public Livre(String ref,String des,double prix,long ISBN,short nbre_pages,String Auteur) {
    	  a.setref(ref);
    	  a.setdes(des);
    	  this.prix=prix;
    	  //super();
    	  this.ISBN=ISBN;
    	  this.nbre_pages=nbre_pages;
    	  this.Auteur=Auteur;
     
      }
    LE 1er constructeur fait appel au constructeur de la super classe Article : super(), mais le second j'ai été obligé de créer une instance de Article a,pour pouvoir avoir access aux accesseurs (get et set) d'une part et aussi reécrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     a.setref(ref);
      a.setdes(des);
      this.prix=prix;
    au lieu de récupérer le constructeur de la super classe (le deuxième) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     public Article(String ref,String des, double prix) {
      this.ref=ref;
      this.des=des;
      this.prix=prix;
      nbInstances++;
      }
    avec l'instruction
    Tout cela fonctionne correctement sauf que si j'utilise :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     public Livre(String ref,String des,double prix,long ISBN,short nbre_pages,String Auteur) {
              super();
    	  this.ISBN=ISBN;
    	  this.nbre_pages=nbre_pages;
    	  this.Auteur=Auteur;	  
      }
    Je n'aurai pas acces aux ref,des et prix.Ma question est de savoir comment dans un cas similaire pouvoir réutiliser un constructeurs d'une super classe sans avoir quasiment à tout réécrire ?Est ce possible ? Est ce que ma façon d e faire est correcte et n'y a t il pas d'autres solutions sans avoir a créer une instance de la super classe ?
    Merci si vous avez des idées

  2. #2
    Membre expérimenté
    Homme Profil pro
    Développeur Java
    Inscrit en
    Octobre 2013
    Messages
    131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Israël

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2013
    Messages : 131
    Par défaut
    Pourquoi tu ne mettrais pas toutes tes proprietes avec un acces protected au lieu de private. Tu auras alors acces depuis ta classe enfant.

  3. #3
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 247
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 247
    Par défaut
    je connais rien en java, mais en utilisant super(ref, des, prix) à la place de simplement super(), ça marche pas ?

  4. #4
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Hello,

    Citation Envoyé par sevyc64 Voir le message
    je connais rien en java, mais en utilisant super(ref, des, prix) à la place de simplement super(), ça marche pas ?
    si.

    (Et au passage, pas besoin de guillemets dans le titre. Oui, ça s'appelle la surcharge de constructeur.)
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    899
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 899
    Par défaut
    Citation Envoyé par thelvin Voir le message
    Hello,



    si.

    (Et au passage, pas besoin de guillemets dans le titre. Oui, ça s'appelle la surcharge de constructeur.)
    ****************************
    Merci pour ton aide

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    899
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 899
    Par défaut
    Citation Envoyé par sevyc64 Voir le message
    je connais rien en java, mais en utilisant super(ref, des, prix) à la place de simplement super(), ça marche pas ?
    ***************************
    Merci ca marche !

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

    Informations forums :
    Inscription : Février 2007
    Messages : 899
    Par défaut
    Citation Envoyé par Yonito Voir le message
    Pourquoi tu ne mettrais pas toutes tes proprietes avec un acces protected au lieu de private. Tu auras alors acces depuis ta classe enfant.
    ******************************
    Merci pour ta réponse, oui je l'ai mis protected pour :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    protected double prix;
    mais je préfère ne pas trop utiliser ce niveau d’accessibilité et privilégier le "private"

    Merci

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

Discussions similaires

  1. Quote dans une requete...
    Par Isildur dans le forum Langage SQL
    Réponses: 6
    Dernier message: 20/06/2006, 10h57
  2. [xsl]simuler le mecanisme OO de "liaison dynamique"
    Par philemon_siclone dans le forum XSL/XSLT/XPATH
    Réponses: 10
    Dernier message: 19/12/2003, 11h34
  3. Problème de quote
    Par kennini dans le forum ASP
    Réponses: 4
    Dernier message: 20/11/2003, 09h40
  4. VARCHAR contenant une quote '
    Par tonyskn dans le forum Langage SQL
    Réponses: 2
    Dernier message: 29/05/2003, 19h21
  5. Quotes dans TFilenameEdit (RXLib)
    Par AnnSo dans le forum Composants VCL
    Réponses: 3
    Dernier message: 23/01/2003, 20h26

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