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:
Evidemment, ça ne fonctionne pas car SuperVoiture appelant le constructeur de la classe mère, ça boucle est je me retrouve avec un stackoverflow.
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); } } }
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,
Partager