Moumou
:
Pollux :
Non, ça ne va pas bien du tout, tu ne peux pas importer un objet 3rd party déjà existant vers ce modèle (et pour cause, si l'objet est d'une classe dérivée de la classe 3rd party, il aura du mal à dériver aussi de ta classe extendée ^^)
Boah, il suffit de faire un constructeur par défaut pour ta classe dérivée, qui prend en entrée un argument de la classe originale
Mais non, ça peut pas marcher, tu peux pas transformer une String en DerivedString juste dans le constructeur, il peut y avoir des méthodes différentes, des champs en plus, etc
(sans même parler de ce qui se passerait si tu re-passais ta classe à une lib 3rd-party, si par hasard elle essaye de regarder si ta String est bien une DerivedString ça va forcément foirer ^^)
Pollux :
Ben oui, c'est bien ce que je dis, mais justement, cette propriété évoluera *forcément* avec le temps, donc dire que "les types sont fixes si tu conçois bien ton programme" est complètement faux...
Pas si tu trouves les conditions non pas suffisantes, mais nécessaires
Idéalement elles devraient quand même être presque suffisantes (sinon autant tout faire avec des Object et lancer une exception si la méthode n'existe pas
ou pour reprendre le cas du PGCD, c'est stupide d'avoir un algorithme qui accepte n'importe quel anneau mais ne termine pas si l'anneau ne vérifie pas certaines propriétés), du coup même les conditions nécessaires sont amenées à évoluer...