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

Java Discussion :

Interrogation sur les constructeurs -Cas d'héritage-


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Mai 2006
    Messages
    705
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 705
    Par défaut Interrogation sur les constructeurs -Cas d'héritage-
    Bonjour,

    En fait, j'ai une question sur l'héritage!

    Supposons que j'ai une classe mère A

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    public class A {
    	public i n t x ;
       	public A () {}
       	public A ( int x ) {
      		 this . x = x ;
    	}
    }
    et un classe fille B

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public class B extends A {
      	public int y ;
      	public B ( i n t  x , i n t  y ) {
      		this . x = x ;
      		this . y = y ;
    	}
    }
    quelle est la différence (ou bien le plus "professionnel") entre utiliser un constructeur de la classe B comme ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public B ( i n t  x , i n t  y ) {
      		this . x = x ;
      		this . y = y ;
    	}
    ou de cette façon

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public B ( i n t  x , i n t  y ) {
      		super(x);
      		this . y = y ;
    	}
    Merci en avance!

  2. #2
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Disons que s'il n'y a qu'une affectation dans le constructeur, les 2 se valent. Par contre, s'il y a du code de contrôle ou de transformation dans le constructeur, là, ce n'est plus la même musique.

    De manière générale, comme on ne sait pas forcément de quoi l'avenir sera fait, je te suggère d'utiliser la méthode utilisant super(x).
    Comme ceci, si plus tard des contrôles sont ajoutés, ta classe B en héritera alors qu'avec l'affectation directe non.
    Là, à terme, tu pourrais avoir un problème... la classe A pourrait supposer que la variable x a été contrôlée et ne ferait pas certains tests avant d'utiliser cette variable, d'où peut-être un plantage...
    Imaginons qu'à la place d'un int on utilise un Integer, le constructeur pourrait tester la valeur non nulle, par la suite, implicitement, dans A, x ne pouvant être null on pourrait avoir des calculs via x.intValue() et là, le drame, NullPointerException parce que le constructeur de B n'a pas fait ce test

    Bref, j'espère t'avoir convaincu qu'en utilisant la logique inhérente à l'héritage, on s'affranchit d'éventuels problèmes futurs
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. Question sur les constructeurs
    Par TocTocKiéLà? dans le forum C++
    Réponses: 2
    Dernier message: 27/06/2007, 17h52
  2. Interrogation sur les frames d'animation
    Par franc82 dans le forum Développement 2D, 3D et Jeux
    Réponses: 2
    Dernier message: 23/11/2006, 18h40
  3. [POO]Question sur les constructeurs
    Par Burinho dans le forum Langage
    Réponses: 16
    Dernier message: 08/04/2006, 21h56
  4. gérer les exceptions sur les constructeurs?
    Par LESOLEIL dans le forum Général Java
    Réponses: 9
    Dernier message: 15/03/2006, 10h46
  5. Petite interrogation sur les z-index et div
    Par Delphy113 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 13/02/2006, 21h09

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