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 :

Instancier une classe fille depuis le constructeur de la classe mère


Sujet :

avec Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2011
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 65
    Points : 65
    Points
    65
    Par défaut Instancier une classe fille depuis le constructeur de la classe mère
    Bonjour à tous,

    Je suis en train de me casser la tête sur un problème depuis un 2 jours. Ne trouvant pas de solution satisfaisante, je vous le présente de manière très simplifiée:

    Disons que j'ai une classe mère Voiture avec son constructeur qui prend 2 paramètres, nom et vitesse de pointe.
    De manière générale, j'instancie une classe Voiture. Sauf, si la vitesse de pointe dépasse 300, dans ce cas, je veux instancier la classe fille de Voiture, à savoir SuperVoiture, qui prend en paramètres nom et vitesse de pointe.

    A la base, j'étais parti sur quelque chose du style:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    	public Voiture(String nom, int vitesse) {
    			if (vitesse < 300){
    				this.setNom(nom);
    				this.setVitesse(vitesse);
    			} else {
    				new SuperVoiture(nom, vitesse);
    			}
    		}
    	}
    Evidemment, ça ne fonctionne pas car SuperVoiture appelant le constructeur de la classe mère, ça boucle est je me retrouve avec un stackoverflow.
    Pour le moment, la seule solution que j'ai trouvé consiste à instancier la classe Voiture dans une variable et ensuite passer par une fonction pour "promouvoir" ou non, l'objet crée ( Voiture maVariableVoiture = new SuperVoiture(maVariableVoiture)
    Mais j'aurai voulu me passer de faire ça en deux étapes car c'est un coup à oublier un jour la fonction après l'instanciation.
    Y a t-il possibilité de faire cela?

    Merci d'avance pour vos réponses.
    Cordialement,

  2. #2
    Expert confirmé Avatar de yildiz-online
    Homme Profil pro
    Architecte de domaine
    Inscrit en
    Octobre 2011
    Messages
    1 444
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte de domaine

    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 444
    Points : 4 563
    Points
    4 563
    Par défaut
    2 problèmes:

    A) Tu instancies un objet depuis son propre constructeur (puisque SuperVoiture fait obligatoirement appel à super(nom, vitesse)), le constructeur s'appelle lui même indéfiniment et la mémoire sature.

    B) Une classe parent ne doit pas connaitre les enfants, si tu en arrives à faire ça, c'est que ta conception est mauvaise.
    PXL le retro-gaming facile: Essayez-le

    Yildiz-Engine an open-source modular game engine: Website
    Yildiz-Online a 3D MMORTS in alpha: Facebook page / Youtube page

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2011
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 65
    Points : 65
    Points
    65
    Par défaut
    Bonjour yildiz-online;

    J'ai encore retourné le problème et vous avez confirmé ce que je pensais.
    Je vais abandonner cette option et revenir sur quelque chose de plus conventionnel (et qui fonctionne très bien accessoirement).

    Merci pour le retour aussi rapide.
    Je passe en résolu.

    Cordialement,

  4. #4
    Expert confirmé Avatar de yildiz-online
    Homme Profil pro
    Architecte de domaine
    Inscrit en
    Octobre 2011
    Messages
    1 444
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte de domaine

    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 444
    Points : 4 563
    Points
    4 563
    PXL le retro-gaming facile: Essayez-le

    Yildiz-Engine an open-source modular game engine: Website
    Yildiz-Online a 3D MMORTS in alpha: Facebook page / Youtube page

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2011
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 65
    Points : 65
    Points
    65
    Par défaut
    Merci pour le lien.

    C'est lu, compris et inclus dans le code ^^
    C'était exactement ce dont j'avais besoin.

    Cordialement,

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 18/06/2010, 13h19
  2. [MySQL] Listing des entrées d'une table fille depuis listing table mère
    Par Romain_33 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 16/05/2009, 00h48
  3. Instanciation d'une classe fille depuis une classe mère
    Par khaled-benloucif dans le forum Langage
    Réponses: 2
    Dernier message: 30/01/2009, 23h59
  4. Accèder à une classe fille depuis la classe mère
    Par Phreak0x dans le forum Windows Forms
    Réponses: 3
    Dernier message: 28/10/2008, 10h14
  5. Réponses: 10
    Dernier message: 20/09/2006, 17h04

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